Changeset 5935 for trunk/src/user32/gen_object.cpp
- Timestamp:
- Jun 9, 2001, 4:50:26 PM (24 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/user32/gen_object.cpp
r5083 r5935 1 /* $Id: gen_object.cpp,v 1. 7 2001-02-10 10:31:31sandervl Exp $ */1 /* $Id: gen_object.cpp,v 1.8 2001-06-09 14:50:17 sandervl Exp $ */ 2 2 /* 3 3 * Generic Object Class for OS/2 … … 16 16 #include <win32type.h> 17 17 #include <gen_object.h> 18 #include <vmutex.h>19 18 20 19 #define DBG_LOCALLOG DBG_gen_object 21 20 #include "dbglocal.h" 22 21 23 VMutex genMutex[OBJTYPE_MAX];24 25 22 //****************************************************************************** 26 23 //****************************************************************************** 27 GenericObject::GenericObject(GenericObject **head, DWORD objType)24 GenericObject::GenericObject(GenericObject **head, CRITICAL_SECTION *pLock) 28 25 { 29 this->objType = objType; 30 this->head = head; 31 this->next = NULL; 26 this->pLock = pLock; 27 this->head = head; 28 this->next = NULL; 29 refCount = 1; 30 31 fLinked = FALSE; 32 fDeletePending = FALSE; 32 33 33 genMutex[objType].enter(); 34 link(); 35 } 36 //****************************************************************************** 37 //****************************************************************************** 38 GenericObject::~GenericObject() 39 { 40 unlink(); 41 } 42 //****************************************************************************** 43 //****************************************************************************** 44 void GenericObject::link() 45 { 46 lock(); 34 47 if(*head == NULL) { 35 48 *head = this; … … 43 56 cur->next = this; 44 57 } 45 genMutex[objType].leave(); 58 fLinked = TRUE; 59 unlock(); 46 60 } 47 61 //****************************************************************************** 48 62 //****************************************************************************** 49 GenericObject::~GenericObject()63 void GenericObject::unlink() 50 64 { 65 if(!fLinked) return; 66 51 67 //remove from linked list 52 genMutex[objType].enter();68 lock(); 53 69 if(*head == this) { 54 70 *head = next; … … 61 77 if(cur == NULL) { 62 78 dprintf(("GenericObject dtor: cur == NULL!!")); 79 unlock(); 63 80 DebugInt3(); 81 return; 64 82 } 65 83 } 66 84 cur->next = next; 67 85 } 68 genMutex[objType].leave(); 86 unlock(); 87 } 88 //****************************************************************************** 89 //****************************************************************************** 90 LONG GenericObject::release() 91 { 92 //// dprintf(("release -> refcount %x", refCount)); 93 #ifdef DEBUG 94 if(refCount-1 < 0) { 95 DebugInt3(); 96 } 97 #endif 98 if(InterlockedDecrement(&refCount) == 0 && fDeletePending) { 99 delete this; 100 return 0; 101 } 102 return refCount; 69 103 } 70 104 //****************************************************************************** … … 77 111 while(cur) { 78 112 next = cur->next; 113 if(cur->getRefCount() != 0) { 114 dprintf(("Refcount %d for object %x", cur->getRefCount(), cur)); 115 } 79 116 delete cur; 80 117 cur = next; … … 83 120 //****************************************************************************** 84 121 //****************************************************************************** 85 void GenericObject::enterMutex()86 {87 genMutex[objType].enter();88 }89 //******************************************************************************90 //******************************************************************************91 void GenericObject::leaveMutex()92 {93 genMutex[objType].leave();94 }95 //******************************************************************************96 //******************************************************************************97 void GenericObject::enterMutex(DWORD objType)98 {99 genMutex[objType].enter();100 }101 //******************************************************************************102 //******************************************************************************103 void GenericObject::leaveMutex(DWORD objType)104 {105 genMutex[objType].leave();106 }107 //******************************************************************************108 //******************************************************************************
Note:
See TracChangeset
for help on using the changeset viewer.