reformatting + fix GDIOBJ_LockMultipleObj() to not try to lock a NULL handle.

svn path=/trunk/; revision=5413
This commit is contained in:
Royce Mitchell III 2003-08-04 19:08:26 +00:00
parent 3f0eccc563
commit 0132757b63

View file

@ -19,7 +19,7 @@
/* /*
* GDIOBJ.C - GDI object manipulation routines * GDIOBJ.C - GDI object manipulation routines
* *
* $Id: gdiobj.c,v 1.32 2003/08/04 00:24:07 royce Exp $ * $Id: gdiobj.c,v 1.33 2003/08/04 19:08:26 royce Exp $
* *
*/ */
@ -333,25 +333,32 @@ GDIOBJ_FreeObj(HGDIOBJ hObj, WORD Magic, DWORD Flag)
BOOL FASTCALL BOOL FASTCALL
GDIOBJ_LockMultipleObj( PGDIMULTILOCK pList, INT nObj ) GDIOBJ_LockMultipleObj( PGDIMULTILOCK pList, INT nObj )
{ {
INT i, j; INT i, j;
ASSERT( pList ); ASSERT( pList );
//go through the list checking for duplicate objects // FIXME - check for "invalid" handles
for( i = 0; i < nObj; i++ ){ //go through the list checking for duplicate objects
(pList+i)->pObj = NULL; for( i = 0; i < nObj; i++ )
for( j = 0; j < i; j++ ){ {
if( ((pList+i)->hObj == (pList+j)->hObj) (pList+i)->pObj = NULL;
&& ((pList+i)->Magic == (pList+j)->Magic) ){ for( j = 0; j < i; j++ )
//already locked, so just copy the pointer to the object {
(pList+i)->pObj = (pList+j)->pObj; if( ((pList+i)->hObj == (pList+j)->hObj)
break; && ((pList+i)->Magic == (pList+j)->Magic)
} )
} {
if( (pList+i)->pObj == NULL ){ //already locked, so just copy the pointer to the object
//object hasn't been locked, so lock it. (pList+i)->pObj = (pList+j)->pObj;
(pList+i)->pObj = GDIOBJ_LockObj( (pList+i)->hObj, (pList+i)->Magic ); break;
} }
} }
return TRUE; if( (pList+i)->pObj == NULL )
{
//object hasn't been locked, so lock it.
if ( (pList+i)->hObj )
(pList+i)->pObj = GDIOBJ_LockObj( (pList+i)->hObj, (pList+i)->Magic );
}
}
return TRUE;
} }
/*! /*!
@ -366,22 +373,26 @@ GDIOBJ_LockMultipleObj( PGDIMULTILOCK pList, INT nObj )
BOOL FASTCALL BOOL FASTCALL
GDIOBJ_UnlockMultipleObj( PGDIMULTILOCK pList, INT nObj ) GDIOBJ_UnlockMultipleObj( PGDIMULTILOCK pList, INT nObj )
{ {
INT i, j; INT i, j;
ASSERT( pList ); ASSERT( pList );
//go through the list checking for duplicate objects //go through the list checking for duplicate objects
for( i = 0; i < nObj; i++ ){ for( i = 0; i < nObj; i++ )
if( (pList+i)->pObj != NULL ){ {
for( j = i+1; j < nObj; j++ ){ if( (pList+i)->pObj != NULL )
if( ((pList+i)->pObj == (pList+j)->pObj) ){ {
//set the pointer to zero for all duplicates for( j = i+1; j < nObj; j++ )
(pList+j)->pObj = NULL; {
} if( ((pList+i)->pObj == (pList+j)->pObj) )
} {
GDIOBJ_UnlockObj( (pList+i)->hObj, (pList+i)->Magic ); //set the pointer to zero for all duplicates
(pList+i)->pObj = NULL; (pList+j)->pObj = NULL;
} }
}
GDIOBJ_UnlockObj( (pList+i)->hObj, (pList+i)->Magic );
(pList+i)->pObj = NULL;
} }
return TRUE; }
return TRUE;
} }
/*! /*!