Ignore:
Timestamp:
Apr 7, 2002, 4:38:08 PM (23 years ago)
Author:
sandervl
Message:

changed vmutex usage

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/gdi32/objhandle.cpp

    r7635 r8202  
    1 /* $Id: objhandle.cpp,v 1.20 2001-12-15 18:50:27 sandervl Exp $ */
     1/* $Id: objhandle.cpp,v 1.21 2002-04-07 14:38:08 sandervl Exp $ */
    22/*
    33 * Win32 Handle Management Code for OS/2
     
    4545static VMutex    objTableMutex;
    4646
     47#ifdef DEBUG
     48static DWORD GetObjectTypeNoDbg( HGDIOBJ hObj);
     49#else
     50#define GetObjectTypeNoDbg GetObjectType
     51#endif
     52
    4753//******************************************************************************
    4854//******************************************************************************
    4955BOOL WIN32API ObjAllocateHandle(HANDLE *hObject, DWORD dwUserData, ObjectType type)
    5056{
    51     objTableMutex.enter(VMUTEX_WAIT_FOREVER);
     57    objTableMutex.enter();
    5258    if(lowestFreeIndex == -1) {
    5359        //oops, out of handles
     
    8591    hObject &= OBJHANDLE_MAGIC_MASK;
    8692    if(hObject < MAX_OBJECT_HANDLES) {
    87         objTableMutex.enter(VMUTEX_WAIT_FOREVER);
     93        objTableMutex.enter();
    8894        objHandleTable[hObject].dwUserData = 0;
    8995        objHandleTable[hObject].type = GDIOBJ_NONE;
     
    158164  if(lpBuffer == NULL)
    159165  { //return required size if buffer pointer == NULL
    160     int objtype = GetObjectType(hObject);
     166    int objtype = GetObjectTypeNoDbg(hObject);
    161167    switch(objtype)
    162168    {
     
    219225        hObject |= GDIOBJ_PREFIX;
    220226  }
    221   objtype = GetObjectType(hObject);
     227  objtype = GetObjectTypeNoDbg(hObject);
    222228
    223229  switch(objtype)
     
    253259//******************************************************************************
    254260//******************************************************************************
     261#ifdef DEBUG
     262static char *gditypenames[] = {
     263"NULL",
     264"OBJ_PEN",
     265"OBJ_BRUSH",
     266"OBJ_DC",
     267"OBJ_METADC",
     268"OBJ_PAL",
     269"OBJ_FONT",
     270"OBJ_BITMAP",
     271"OBJ_REGION",
     272"OBJ_METAFILE",
     273"OBJ_MEMDC",
     274"OBJ_EXTPEN",
     275"OBJ_ENHMETADC",
     276"OBJ_ENHMETAFILE"
     277};
     278
     279char *DbgGetGDITypeName(DWORD handleType)
     280{
     281    if(handleType <= OBJ_ENHMETAFILE) {
     282        return gditypenames[handleType];
     283    }
     284    return "UNKNOWN TYPE";
     285}
     286#endif
     287//******************************************************************************
     288//******************************************************************************
    255289HGDIOBJ WIN32API SelectObject(HDC hdc, HGDIOBJ hObj)
    256290{
     
    263297    }
    264298
    265     handleType = GetObjectType(hObj);
    266     dprintf2(("GDI32: SelectObject %x %x type %x", hdc, hObj, handleType));
     299    handleType = GetObjectTypeNoDbg(hObj);
     300    dprintf2(("GDI32: SelectObject %x %x type %s", hdc, hObj, DbgGetGDITypeName(handleType)));
    267301    if(handleType == GDIOBJ_REGION) {
    268302        //Return complexity here; not previously selected clip region
     
    287321    }
    288322    rc = O32_SelectObject(hdc, hObj);
    289     if(rc != 0 && GetObjectType(rc) == OBJ_BITMAP && DIBSection::getSection != NULL)
     323    if(rc != 0 && GetObjectTypeNoDbg(rc) == OBJ_BITMAP && DIBSection::getSection != NULL)
    290324    {
    291325        DIBSection *dsect = DIBSection::findObj(rc);
     
    327361//******************************************************************************
    328362//******************************************************************************
    329 DWORD WIN32API GetObjectType( HGDIOBJ hObj)
     363#ifdef DEBUG
     364static DWORD GetObjectTypeNoDbg( HGDIOBJ hObj)
    330365{
    331366    DWORD objtype;
     
    340375        return OBJ_REGION;
    341376    }
     377    return O32_GetObjectType(hObj);
     378}
     379#endif
     380//******************************************************************************
     381//******************************************************************************
     382DWORD WIN32API GetObjectType( HGDIOBJ hObj)
     383{
     384    DWORD objtype;
     385
     386    //TODO: must use 16 bits gdi object handles
     387    if(HIWORD(hObj) == 0) {
     388        hObj |= GDIOBJ_PREFIX;
     389    }
     390    if(ObjGetHandleType(hObj) == GDIOBJ_REGION) {
     391        dprintf2(("GDI32: GetObjectType %x REGION", hObj));
     392        SetLastError(ERROR_SUCCESS);
     393        return OBJ_REGION;
     394    }
    342395    objtype = O32_GetObjectType(hObj);
    343396    dprintf2(("GDI32: GetObjectType %x objtype %d", hObj, objtype));
     
    360413
    361414    //System objects can't be deleted (TODO: any others?? (fonts?))!!!!)
    362     objtype = GetObjectType(hObj);
     415    objtype = GetObjectTypeNoDbg(hObj);
    363416    switch (objtype)
    364417    {
Note: See TracChangeset for help on using the changeset viewer.