- Timestamp:
- Sep 16, 2002, 3:58:25 PM (23 years ago)
- Location:
- trunk/src/gdi32
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/gdi32/gdistats.cpp
r7640 r9251 4 4 #ifdef DEBUG 5 5 6 static DWORD nrdcscreated = 0; 7 static DWORD nrfontscreated = 0; 8 static DWORD nrpenscreated = 0; 9 static DWORD nrbrushescreated = 0; 10 static DWORD nrregionscreated = 0; 11 static DWORD nrbitmapscreated = 0; 12 6 #define STATS_MAX_OBJECTS 1024 7 8 static DWORD createddc[STATS_MAX_OBJECTS] = {0}; 9 static DWORD createdfont[STATS_MAX_OBJECTS] = {0}; 10 static DWORD createdpen[STATS_MAX_OBJECTS] = {0}; 11 static DWORD createdbrush[STATS_MAX_OBJECTS] = {0}; 12 static DWORD createdregion[STATS_MAX_OBJECTS] = {0}; 13 static DWORD createdbitmap[STATS_MAX_OBJECTS] = {0}; 14 15 static DWORD nrdcscreated = 0; 16 static DWORD nrfontscreated = 0; 17 static DWORD nrpenscreated = 0; 18 static DWORD nrbrushescreated = 0; 19 static DWORD nrregionscreated = 0; 20 static DWORD nrbitmapscreated = 0; 21 22 23 //****************************************************************************** 24 //****************************************************************************** 25 static void STAT_InsertObject(HANDLE hObject, DWORD *pdwObjects) 26 { 27 for(int i=0;i<STATS_MAX_OBJECTS;i++) { 28 if(pdwObjects[i] == 0) { 29 pdwObjects[i] = hObject; 30 break; 31 } 32 } 33 if(i == STATS_MAX_OBJECTS) { 34 dprintf(("!WARNING! STAT_InsertObject: no room left!!")); 35 } 36 } 37 //****************************************************************************** 38 //****************************************************************************** 39 static void STAT_DeleteObject(HANDLE hObject, DWORD *pdwObjects) 40 { 41 for(int i=0;i<STATS_MAX_OBJECTS;i++) { 42 if(pdwObjects[i] == hObject) { 43 pdwObjects[i] = 0; 44 break; 45 } 46 } 47 if(i == STATS_MAX_OBJECTS) { 48 dprintf(("!WARNING! STAT_DeleteObject: %x not found!!", hObject)); 49 } 50 } 51 //****************************************************************************** 52 //****************************************************************************** 53 static void STAT_PrintLeakedObjects(char *szMessage, DWORD *pdwObjects) 54 { 55 for(int i=0;i<STATS_MAX_OBJECTS;i++) { 56 if(pdwObjects[i] != 0) { 57 dprintf(("%s %x", szMessage, pdwObjects[i])); 58 } 59 } 60 } 13 61 //****************************************************************************** 14 62 //****************************************************************************** … … 16 64 { 17 65 nrfontscreated++; 66 STAT_InsertObject(hFont, createdfont); 18 67 } 19 68 //****************************************************************************** … … 22 71 { 23 72 nrdcscreated++; 73 STAT_InsertObject(newHdc, createddc); 24 74 } 25 75 //****************************************************************************** … … 28 78 { 29 79 nrdcscreated--; 80 STAT_DeleteObject(hdc, createddc); 30 81 } 31 82 //****************************************************************************** … … 34 85 { 35 86 nrbrushescreated++; 87 STAT_InsertObject(hBrush, createdbrush); 36 88 } 37 89 //****************************************************************************** … … 40 92 { 41 93 nrbrushescreated++; 94 STAT_InsertObject(hBrush, createdbrush); 42 95 } 43 96 //****************************************************************************** … … 46 99 { 47 100 nrpenscreated++; 101 STAT_InsertObject(hPen, createdpen); 48 102 } 49 103 //****************************************************************************** … … 52 106 { 53 107 nrpenscreated++; 108 STAT_InsertObject(hPen, createdpen); 54 109 } 55 110 //****************************************************************************** … … 59 114 { 60 115 nrpenscreated++; 116 STAT_InsertObject(hPen, createdpen); 61 117 } 62 118 //****************************************************************************** … … 65 121 { 66 122 nrbrushescreated++; 123 STAT_InsertObject(hBrush, createdbrush); 67 124 } 68 125 //****************************************************************************** … … 71 128 { 72 129 nrbrushescreated++; 130 STAT_InsertObject(hBrush, createdbrush); 73 131 } 74 132 //****************************************************************************** … … 77 135 { 78 136 nrbrushescreated++; 137 STAT_InsertObject(hBrush, createdbrush); 79 138 } 80 139 //****************************************************************************** … … 84 143 { 85 144 nrdcscreated++; 145 STAT_InsertObject(hdc, createddc); 86 146 } 87 147 //****************************************************************************** … … 91 151 { 92 152 nrdcscreated++; 153 STAT_InsertObject(hdc, createddc); 93 154 } 94 155 //****************************************************************************** … … 97 158 { 98 159 nrregionscreated++; 160 STAT_InsertObject(hRgn, createdregion); 99 161 } 100 162 //****************************************************************************** … … 103 165 { 104 166 nrregionscreated++; 167 STAT_InsertObject(hRgn, createdregion); 105 168 } 106 169 //****************************************************************************** … … 109 172 { 110 173 nrregionscreated++; 174 STAT_InsertObject(hRgn, createdregion); 111 175 } 112 176 //****************************************************************************** … … 115 179 { 116 180 nrregionscreated++; 181 STAT_InsertObject(hRgn, createdregion); 117 182 } 118 183 //****************************************************************************** … … 121 186 { 122 187 nrregionscreated++; 188 STAT_InsertObject(hRgn, createdregion); 123 189 } 124 190 //****************************************************************************** … … 127 193 { 128 194 nrregionscreated++; 195 STAT_InsertObject(hRgn, createdregion); 129 196 } 130 197 //****************************************************************************** … … 135 202 { 136 203 nrbitmapscreated++; 204 STAT_InsertObject(hBitmap, createdbitmap); 137 205 } 138 206 //****************************************************************************** … … 141 209 { 142 210 nrbitmapscreated++; 211 STAT_InsertObject(hBitmap, createdbitmap); 143 212 } 144 213 //****************************************************************************** … … 148 217 { 149 218 nrbitmapscreated++; 219 STAT_InsertObject(hBitmap, createdbitmap); 150 220 } 151 221 //****************************************************************************** … … 155 225 { 156 226 nrbitmapscreated++; 227 STAT_InsertObject(hBitmap, createdbitmap); 157 228 } 158 229 //****************************************************************************** … … 161 232 { 162 233 nrbitmapscreated++; 234 STAT_InsertObject(hBitmap, createdbitmap); 163 235 } 164 236 //****************************************************************************** … … 170 242 case OBJ_EXTPEN: 171 243 nrpenscreated--; 244 STAT_DeleteObject(hObj, createdpen); 172 245 break; 173 246 case OBJ_BRUSH: 174 247 nrbrushescreated--; 248 STAT_DeleteObject(hObj, createdbrush); 175 249 break; 176 250 case OBJ_FONT: 177 251 nrfontscreated--; 252 STAT_DeleteObject(hObj, createdfont); 178 253 break; 179 254 case OBJ_REGION: 180 255 nrregionscreated--; 256 STAT_DeleteObject(hObj, createdregion); 181 257 break; 182 258 case OBJ_BITMAP: 183 259 nrbitmapscreated--; 260 STAT_DeleteObject(hObj, createdbitmap); 261 break; 262 263 case OBJ_MEMDC: 264 case OBJ_DC: 265 nrdcscreated--; 266 STAT_DeleteObject(hObj, createddc); 184 267 break; 185 268 186 269 case OBJ_PAL: 187 270 case OBJ_METAFILE: 188 case OBJ_MEMDC:189 271 case OBJ_ENHMETADC: 190 272 case OBJ_ENHMETAFILE: 191 case OBJ_DC:192 273 case OBJ_METADC: 193 break; 274 break; 275 default: 276 dprintf(("!ERROR! Unknown object %x of type %d", hObj, objtype)); 277 break; 194 278 } 195 279 } … … 200 284 dprintf(("************* GDI32 STATISTICS BEGIN *****************")); 201 285 dprintf(("Leaked dcs %d", nrdcscreated)); 286 STAT_PrintLeakedObjects("Leaked DC", createddc); 287 dprintf(("************* ********************** *****************")); 202 288 dprintf(("Leaked font objects %d", nrfontscreated)); 289 STAT_PrintLeakedObjects("Leaked Font", createdfont); 290 dprintf(("************* ********************** *****************")); 203 291 dprintf(("Leaked pen objects %d", nrpenscreated)); 292 STAT_PrintLeakedObjects("Leaked Pen", createdpen); 293 dprintf(("************* ********************** *****************")); 204 294 dprintf(("Leaked brush objects %d", nrbrushescreated)); 295 STAT_PrintLeakedObjects("Leaked Brush", createdbrush); 296 dprintf(("************* ********************** *****************")); 205 297 dprintf(("Leaked region objects %d", nrregionscreated)); 298 STAT_PrintLeakedObjects("Leaked Region", createdregion); 299 dprintf(("************* ********************** *****************")); 206 300 dprintf(("Leaked bitmap objects %d", nrbitmapscreated)); 301 STAT_PrintLeakedObjects("Leaked Bitmap", createdbitmap); 207 302 dprintf(("************* GDI32 STATISTICS END *****************")); 208 303 } -
trunk/src/gdi32/objhandle.cpp
r8995 r9251 1 /* $Id: objhandle.cpp,v 1.2 7 2002-08-13 14:45:37sandervl Exp $ */1 /* $Id: objhandle.cpp,v 1.28 2002-09-16 13:58:25 sandervl Exp $ */ 2 2 /* 3 3 * Win32 Handle Management Code for OS/2 … … 52 52 BOOL WIN32API ObjAllocateHandle(HANDLE *hObject, DWORD dwUserData, DWORD dwType) 53 53 { 54 DWORD oldlowestidx; 55 54 56 objTableMutex.enter(); 55 57 if(objHandleTable == NULL) { … … 79 81 objHandleTable[lowestFreeIndex].dwGDI32Data = 0; 80 82 objHandleTable[lowestFreeIndex].dwFlags = 0; 83 84 oldlowestidx = lowestFreeIndex+1; 85 81 86 lowestFreeIndex = -1; 82 87 83 88 //find next free handle 84 for(int i=0;i<MAX_OBJECT_HANDLES;i++) { 89 findhandle: 90 for(int i=oldlowestidx;i<MAX_OBJECT_HANDLES;i++) { 85 91 if(objHandleTable[i].dwUserData == 0) { 86 92 lowestFreeIndex = i; … … 88 94 } 89 95 } 96 if(lowestFreeIndex == -1) { 97 oldlowestidx = 0; //search from the start 98 goto findhandle; 99 } 90 100 objTableMutex.leave(); 91 101 return TRUE; … … 102 112 objHandleTable[hObject].dwUserData = 0; 103 113 objHandleTable[hObject].dwType = HNDL_NONE; 104 if(lowestFreeIndex == -1 || hObject < lowestFreeIndex) 114 //// if(lowestFreeIndex == -1 || hObject < lowestFreeIndex) 115 if(lowestFreeIndex == -1) 105 116 lowestFreeIndex = hObject; 106 117 } … … 489 500 return TRUE; 490 501 } 491 STATS_DeleteObject(hObj, objtype);502 STATS_DeleteObject(hObj, GetObjectType(hObj)); 492 503 493 504 if(ObjQueryHandleType(hObj) == HNDL_REGION)
Note:
See TracChangeset
for help on using the changeset viewer.