Example #1
0
// Find (and lock) a public screen
struct PubScreenNode *LIBFUNC L_FindPubScreen(
	REG(a0, struct Screen *screen),
	REG(d0, BOOL lock))
{
	struct List *pubscreenlist;
	struct PubScreenNode *node;
	char *name=0;

	// Lock the public screen list
	pubscreenlist=LockPubScreenList();

	// Scan it
	for (node=(struct PubScreenNode *)pubscreenlist->lh_Head;
		node->psn_Node.ln_Succ;
		node=(struct PubScreenNode *)node->psn_Node.ln_Succ)
	{
		// See if this node is what we're looking for
		if (node->psn_Screen==screen)
		{
			// Get name pointer
			name=node->psn_Node.ln_Name;

			// Lock screen?
			if (lock && !(LockPubScreen(name)))
				name=0;
			break;
		}
	}

	// Unlock list
	UnlockPubScreenList();

	// Return node pointer
	return (name)?node:0;
}
Example #2
0
static void RefreshScreens()
{
    struct List *list;
    struct PubScreenNode *psn;
    
    DoMethod(ScreenList, MUIM_List_Clear);
    
    list = LockPubScreenList();

    ForeachNode(list, psn)
    {
	DoMethod(ScreenList, MUIM_List_InsertSingle, (IPTR)psn, MUIV_List_Insert_Bottom);
    }
Example #3
0
    INTERNALS

******************************************************************************/

{
    AROS_LIBFUNC_INIT

    struct List *pubscrlist;
    struct PubScreenNode *pubscrnode;
    BOOL found = FALSE;
    BOOL retval = FALSE;

    D(bug("MUIS_ClosePubScreen(%s)\n", name));

    pubscrlist = LockPubScreenList();
    ForeachNode(pubscrlist, pubscrnode)
    {
	if(strcmp(pubscrnode->psn_Node.ln_Name, name) == 0)
	{
	    found = TRUE;
	    break;
	}
    }
    UnlockPubScreenList();
    
    if(found)
    {
	CloseScreen(pubscrnode->psn_Screen);

	struct Node *node;
Example #4
0
    INTERNALS

    Maybe we should correct the + 1 stupidity.

*****************************************************************************/
#define GPB(x) GetPrivIBase(x)

{
    AROS_LIBFUNC_INIT

    struct PubScreenNode *ps;
    struct IntScreen     *scr = (struct IntScreen *)screen;
    struct List          *list;

    list = LockPubScreenList();

    if(scr == NULL)
    {
        ps = (struct PubScreenNode *)list->lh_Head;
        ASSERT(ps != NULL);
    }
    else
    {
        ps = scr->pubScrNode;
        if (ps != NULL)
        {
            ps = (struct PubScreenNode *)ps->psn_Node.ln_Succ;
            ASSERT(ps != NULL);
        }
        else