My favorites | Sign in
Logo
             
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
#pragma once

#include "Utils.h"

namespace SlimDX
{
public ref class DirectXObject abstract
{
internal:
virtual property IUnknown* ComPointer
{
IUnknown* get() abstract;
void set( IUnknown* value ) abstract;
}

protected:
bool m_Disposed;

//the destructor code
void Destruct()
{
ComPointer->Release();
ComPointer = NULL;
}

DirectXObject() : m_Disposed( false )
{ }

public:
static property bool AutoReleaseEnabled;

static DirectXObject()
{
AutoReleaseEnabled = true;
}

virtual ~DirectXObject()
{
Destruct();
}

!DirectXObject()
{
if( AutoReleaseEnabled )
{
Destruct();
}
else
{
Utils::ReportNotDisposed( this );
}
}
};
}
Show details Hide details

Change log

r6 by promit.roy on May 03, 2007   Diff
Refactored all of the destruction related
code into DirectXObject to unify it. Also
added support for enabling and disabling
automatic class release.
Go to: 
Project members, sign in to write a code review

Older revisions

All revisions of this file

File info

Size: 770 bytes, 54 lines
Hosted by Google Code