DXGL r194 - Code Review
For
DXGL
(
recent comments
|
status changes
|
tags
|
authors
|
states
|
release notes
|
statistics
)
Jump to navigation
Jump to search
Repository:
DXGL
Revision:
<
r193
|
r194
|
r195
>
Date:
14:07, 4 July 2012
Author:
admin
Status:
new
Tags:
Comment:
Fix viewport object device binding.
Fix viewport object memory leak.
Modified paths:
/ddraw/glDirect3DDevice.cpp
(modified) (
history
)
/ddraw/glDirect3DViewport.h
(modified) (
history
)
Diff
[
purge
]
Index: ddraw/glDirect3DDevice.cpp
—
—
@@ -266,6 +266,16 @@
267
267
materials[i]->Release();
268
268
}
269
269
}
270
+ for(int i = 0; i < viewportcount; i++)
271
+ {
272
+ if(viewports[i])
273
+ {
274
+ viewports[i]->SetDevice(NULL);
275
+ viewports[i]->SetCurrent(false);
276
+ viewports[i]->Release();
277
+ }
278
+ }
279
+ free(viewports);
270
280
free(materials);
271
281
glD3D7->Release();
272
282
glDDS7->Release();
—
—
@@ -1331,6 +1341,7 @@
1332
1342
}
1333
1343
viewports[viewportcount] = (glDirect3DViewport3*)lpDirect3DViewport;
1334
1344
viewports[viewportcount]->AddRef();
1345
+ viewports[viewportcount]->SetDevice(this);
1335
1346
viewportcount++;
1336
1347
if(viewportcount >= maxviewports)
1337
1348
{
—
—
@@ -1349,6 +1360,7 @@
1350
1361
if(viewports[i] == lpDirect3DViewport)
1351
1362
{
1352
1363
viewports[i]->SetCurrent(false);
1364
+ viewports[i]->SetDevice(NULL);
1353
1365
viewports[i]->Release();
1354
1366
if(currentviewport == viewports[i]) currentviewport = NULL;
1355
1367
viewports[i] = NULL;
Index: ddraw/glDirect3DViewport.h
—
—
@@ -49,6 +49,7 @@
50
50
HRESULT WINAPI SetViewport2(LPD3DVIEWPORT2 lpData);
51
51
HRESULT WINAPI TransformVertices(DWORD dwVertexCount, LPD3DTRANSFORMDATA lpData, DWORD dwFlags, LPDWORD lpOffscreen);
52
52
void SetCurrent(bool current);
53
+ void SetDevice(glDirect3DDevice7 *device){this->device = device;};
53
54
void Sync();
54
55
private:
55
56
ULONG refcount;
Navigation menu
Personal tools
Log in
Namespaces
Special page
English
expanded
collapsed
Views
More
expanded
collapsed
Search
Navigation
Home
Main page
Recent changes
Random page
MediaWiki help
Introduction
Progress
Downloads
Source code
Build from source
AppDB
Bug reports
Forums
Tools
Special pages
Printable version