Changeset 8202 for trunk/src


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

changed vmutex usage

Location:
trunk/src
Files:
9 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    {
  • trunk/src/user32/HOOK.CPP

    r8132 r8202  
    1 /* $Id: HOOK.CPP,v 1.36 2002-03-28 16:20:06 sandervl Exp $ */
     1/* $Id: HOOK.CPP,v 1.37 2002-04-07 14:36:59 sandervl Exp $ */
    22
    33/*
     
    8080
    8181#define CHECK_MAGIC(a) ((a != 0) && (((HOOKDATA *)a)->magic == HOOK_MAGIC))
    82 
    83 //NOTE: This must be in the local data segment -> if a shared semaphore was
    84 //      created by a different process, the handle returned by DosOpenMutexSem
    85 //      will be returned in hGlobalHookMutex
    86 static HMTX hGlobalHookMutex = 0;
    8782
    8883//Global DLL Data
  • trunk/src/user32/inituser32.cpp

    r7640 r8202  
    1 /* $Id: inituser32.cpp,v 1.10 2001-12-16 15:30:14 sandervl Exp $ */
     1/* $Id: inituser32.cpp,v 1.11 2002-04-07 14:36:59 sandervl Exp $ */
    22/*
    33 * USER32 DLL entry point
     
    4343#include "pmwindow.h"
    4444#include "win32wdesktop.h"
     45#include "win32wndhandle.h"
    4546#include "syscolor.h"
    4647#include "initterm.h"
     
    218219         pmkbdhk_initialize(hab);
    219220
     221         InitializeWindowHandles();
     222
    220223         //SvL: 18-7-'98, Register system window classes (button, listbox etc etc)
    221224         //CB: register internal classes
     
    225228         MONITOR_Initialize(&MONITOR_PrimaryMonitor);
    226229
    227        break;
     230         break;
    228231     
    229232     
  • trunk/src/user32/win32wndhandle.cpp

    r7097 r8202  
    1 /* $Id: win32wndhandle.cpp,v 1.10 2001-10-17 15:16:58 phaller Exp $ */
     1/* $Id: win32wndhandle.cpp,v 1.11 2002-04-07 14:37:00 sandervl Exp $ */
    22/*
    33 * Win32 Handle Management Code for OS/2
     
    2525//******************************************************************************
    2626
    27 //NOTE: This must be in the local data segment -> if a shared semaphore was
    28 //      created by a different process, the handle returned by DosOpenMutexSem
    29 //      will be returned in hGlobalTableMutex
    30 HMTX hGlobalTableMutex = 0;
    31 
    3227//Global DLL Data
    3328#pragma data_seg(_GLOBALDATA)
    34 ULONG  WindowHandleTable[MAX_WINDOW_HANDLES] = {0};
    35 VMutex tableMutex(VMUTEX_SHARED, &hGlobalTableMutex);
     29ULONG                WindowHandleTable[MAX_WINDOW_HANDLES] = {0};
     30CRITICAL_SECTION_OS2 globalwhandlecritsect = {0};
    3631ULONG  lastIndex = 0;
    3732#pragma data_seg()
     
    3934//******************************************************************************
    4035//******************************************************************************
     36void InitializeWindowHandles()
     37{
     38    if(globalwhandlecritsect.hmtxLock == 0) {
     39         DosInitializeCriticalSection(&globalwhandlecritsect, WINHANDLE_CRITSECTION_NAME);
     40    }
     41    else {
     42         dprintf(("InitializeWindowHandles -> access shared critical section"));
     43         DosAccessCriticalSection(&globalwhandlecritsect, WINHANDLE_CRITSECTION_NAME);
     44    }
     45}
     46//******************************************************************************
     47//******************************************************************************
    4148BOOL HwAllocateWindowHandle(HWND *hwnd, DWORD dwUserData)
    4249{
    43   tableMutex.enter(VMUTEX_WAIT_FOREVER, &hGlobalTableMutex);
     50  DosEnterCriticalSection(&globalwhandlecritsect);
    4451
    4552  //find next free handle
     
    5562  if(i == MAX_WINDOW_HANDLES) {
    5663        //oops, out of handles
    57         tableMutex.leave(&hGlobalTableMutex);
     64        DosLeaveCriticalSection(&globalwhandlecritsect);
    5865        dprintf(("ERROR: USER32: HwAllocateWindowHandle OUT OF WINDOW HANDLES!!"));
    5966        DebugInt3();
     
    6572
    6673  lastIndex++;
    67   tableMutex.leave(&hGlobalTableMutex);
     74  DosLeaveCriticalSection(&globalwhandlecritsect);
    6875  return TRUE;
    6976}
     
    7481  hwnd &= WNDHANDLE_MAGIC_MASK;
    7582  if(hwnd < MAX_WINDOW_HANDLES) {
    76         tableMutex.enter(VMUTEX_WAIT_FOREVER, &hGlobalTableMutex);
     83        DosEnterCriticalSection(&globalwhandlecritsect);
    7784        WindowHandleTable[hwnd] = 0;
    78         tableMutex.leave(&hGlobalTableMutex);
     85        DosLeaveCriticalSection(&globalwhandlecritsect);
    7986  }
    8087}
  • trunk/src/user32/win32wndhandle.h

    r2469 r8202  
    1 /* $Id: win32wndhandle.h,v 1.4 2000-01-18 20:08:18 sandervl Exp $ */
     1/* $Id: win32wndhandle.h,v 1.5 2002-04-07 14:37:00 sandervl Exp $ */
    22/*
    33 * Win32 Handle Management Code for OS/2
     
    1717#define WNDHANDLE_MAGIC_MASK     0x0000FFFF
    1818
     19#define WINHANDLE_CRITSECTION_NAME "\\SEM32\\ODIN_WINHANDLE.SEM"
     20
     21void  InitializeWindowHandles();
    1922BOOL  HwAllocateWindowHandle(HWND *hwnd, DWORD dwUserData);
    2023void  HwFreeWindowHandle(HWND hwnd);
  • trunk/src/winmm/waveindart.cpp

    r7196 r8202  
    1 /* $Id: waveindart.cpp,v 1.2 2001-10-24 22:47:42 sandervl Exp $ */
     1/* $Id: waveindart.cpp,v 1.3 2002-04-07 14:36:31 sandervl Exp $ */
    22
    33/*
     
    262262                            0 );
    263263
    264         wmutex.enter(VMUTEX_WAIT_FOREVER);
     264        wmutex.enter();
    265265        fMixerSetup = TRUE;
    266266    }
     
    293293 MCI_GENERIC_PARMS Params;
    294294
    295     wmutex.enter(VMUTEX_WAIT_FOREVER);
     295    wmutex.enter();
    296296    if(State != STATE_RECORDING) {
    297297        State = STATE_STOPPED;
     
    326326    mymciSendCommand(DeviceId, MCI_STOP, MCI_WAIT, (PVOID)&Params, 0);
    327327
    328     dprintf(("Nr of threads blocked on mutex = %d\n", wmutex.getNrBlocked()));
    329 
    330     wmutex.enter(VMUTEX_WAIT_FOREVER);
     328    wmutex.enter();
    331329    while(wavehdr)
    332330    {
     
    341339        callback(WIM_DATA, (ULONG)tmpwavehdr, 0);
    342340
    343         wmutex.enter(VMUTEX_WAIT_FOREVER);
     341        wmutex.enter();
    344342    }
    345343    wavehdr   = NULL;
     
    356354 int i;
    357355
    358     wmutex.enter(VMUTEX_WAIT_FOREVER);
     356    wmutex.enter();
    359357    pwh->lpNext          = NULL;
    360358    pwh->dwBytesRecorded = 0;
     
    507505        return;
    508506    }
    509     wmutex.enter(VMUTEX_WAIT_FOREVER);
     507    wmutex.enter();
    510508
    511509    whdr = wavehdr;
     
    544542                callback(WIM_DATA, (ULONG)whdr, whdr->dwBytesRecorded);
    545543
    546                 wmutex.enter(VMUTEX_WAIT_FOREVER);
     544                wmutex.enter();
    547545            }
    548546        }
  • trunk/src/winmm/waveinoutbase.cpp

    r7792 r8202  
    1 /* $Id: waveinoutbase.cpp,v 1.3 2002-01-29 20:13:52 sandervl Exp $ */
     1/* $Id: waveinoutbase.cpp,v 1.4 2002-04-07 14:36:31 sandervl Exp $ */
    22
    33/*
     
    5555    State    = STATE_STOPPED;
    5656
    57     wmutex.enter(VMUTEX_WAIT_FOREVER);
     57    wmutex.enter();
    5858
    5959    if(wave == NULL) {
     
    7878WaveInOut::~WaveInOut()
    7979{
    80     wmutex.enter(VMUTEX_WAIT_FOREVER);
     80    wmutex.enter();
    8181
    8282    State = STATE_STOPPED;
  • trunk/src/winmm/waveoutdart.cpp

    r7196 r8202  
    1 /* $Id: waveoutdart.cpp,v 1.6 2001-10-24 22:47:42 sandervl Exp $ */
     1/* $Id: waveoutdart.cpp,v 1.7 2002-04-07 14:36:31 sandervl Exp $ */
    22
    33/*
     
    231231        }
    232232
    233         wmutex.enter(VMUTEX_WAIT_FOREVER);
     233        wmutex.enter();
    234234        fMixerSetup = TRUE;
    235235
     
    274274        pwh->lpNext   = NULL;
    275275        pwh->reserved = 0;
    276         wmutex.enter(VMUTEX_WAIT_FOREVER);
     276        wmutex.enter();
    277277        if(wavehdr) {
    278278            WAVEHDR *chdr = wavehdr;
     
    325325    dprintf(("WINMM: DartWaveOut::pause"));
    326326
    327     wmutex.enter(VMUTEX_WAIT_FOREVER);
     327    wmutex.enter();
    328328    if(State != STATE_PLAYING) {
    329329        State = STATE_PAUSED;
     
    381381    mymciSendCommand(DeviceId, MCI_STOP, MCI_WAIT, (PVOID)&Params, 0);
    382382
    383     dprintf(("Nr of threads blocked on mutex = %d\n", wmutex.getNrBlocked()));
    384 
    385     wmutex.enter(VMUTEX_WAIT_FOREVER);
     383    wmutex.enter();
    386384    while(wavehdr)
    387385    {
     
    395393
    396394        callback(WOM_DONE, (ULONG)tmpwavehdr, 0);
    397         wmutex.enter(VMUTEX_WAIT_FOREVER);
     395        wmutex.enter();
    398396    }
    399397    wavehdr   = NULL;
     
    422420    if(fMixerSetup == TRUE)
    423421    {
    424         wmutex.enter(VMUTEX_WAIT_FOREVER);
     422        wmutex.enter();
    425423        State     = STATE_PLAYING;
    426424        fUnderrun = FALSE;
     
    549547    }
    550548
    551     wmutex.enter(VMUTEX_WAIT_FOREVER);
     549    wmutex.enter();
    552550
    553551    bytesPlayed += MixBuffer[curPlayBuf].ulBufferLength;
     
    586584            callback(WOM_DONE, (ULONG)whdr, 0);
    587585
    588             wmutex.enter(VMUTEX_WAIT_FOREVER);
     586            wmutex.enter();
    589587        }
    590588        else break;
  • trunk/src/winmm/waveoutdaud.cpp

    r6026 r8202  
    1 /* $Id: waveoutdaud.cpp,v 1.6 2001-06-16 11:35:22 sandervl Exp $ */
     1/* $Id: waveoutdaud.cpp,v 1.7 2002-04-07 14:36:32 sandervl Exp $ */
    22
    33/*
     
    141141    pwh->lpNext   = NULL;
    142142    pwh->reserved = 0;
    143     wmutex.enter(VMUTEX_WAIT_FOREVER);
     143    wmutex.enter();
    144144    if(wavehdr) {
    145145        WAVEHDR *chdr = wavehdr;
     
    185185    sendIOCTL(DAUDIO_PAUSE, &cmd);
    186186
    187     wmutex.enter(VMUTEX_WAIT_FOREVER);
     187    wmutex.enter();
    188188    if(State != STATE_PLAYING) {
    189189        State = STATE_PAUSED;
     
    240240    sendIOCTL(DAUDIO_STOP, &cmd);
    241241
    242     wmutex.enter(VMUTEX_WAIT_FOREVER);
     242    wmutex.enter();
    243243    while(wavehdr)
    244244    {
     
    252252
    253253        callback(WOM_DONE, (ULONG)tmpwavehdr, 0);
    254         wmutex.enter(VMUTEX_WAIT_FOREVER);
     254        wmutex.enter();
    255255    }
    256256    wavehdr   = NULL;
     
    274274        return(MMSYSERR_NOERROR);
    275275
    276     wmutex.enter(VMUTEX_WAIT_FOREVER);
     276    wmutex.enter();
    277277    State     = STATE_PLAYING;
    278278    fUnderrun = FALSE;
Note: See TracChangeset for help on using the changeset viewer.