]> git.saurik.com Git - wxWidgets.git/blob - src/dfb/ifacehelpers.cpp
954a0160fdd65f8b922b27a419ae575f620a6567
[wxWidgets.git] / src / dfb / ifacehelpers.cpp
1 /////////////////////////////////////////////////////////////////////////////
2 // Name: src/dfb/ifacehelpers.cpp
3 // Purpose: helpers for dealing with DFB interfaces
4 // Author: Vaclav Slavik
5 // Created: 2006-08-09
6 // RCS-ID: $Id$
7 // Copyright: (c) 2006 REA Elektronik GmbH
8 // Licence: wxWindows licence
9 /////////////////////////////////////////////////////////////////////////////
10
11 // For compilers that support precompilation, includes "wx.h".
12 #include "wx/wxprec.h"
13
14 #ifdef __BORLANDC__
15 #pragma hdrstop
16 #endif
17
18 #include "wx/dfb/ifacehelpers.h"
19 #include <directfb.h>
20
21 //-----------------------------------------------------------------------------
22 // wxDfbPtr
23 //-----------------------------------------------------------------------------
24
25 // NB: We can't call AddRef() and Release() directly from wxDfbPtr<T> because
26 // we don't have full type declarations for them if we don't include
27 // <directfb.h> (which user wx headers can't). Fortunately, all DirectFB
28 // interfaces are structs with common beginning that contains pointers to
29 // AddRef and Release, so we can safely cast interface pointer to void* and
30 // then back to arbitrary interface pointer and these calls will still work
31 // correctly. For this purpose, we declare a dummy DFB interface here.
32
33 DECLARE_INTERFACE(wxDummyDFBInterface)
34 DEFINE_INTERFACE(wxDummyDFBInterface, )
35
36 /* static */
37 void wxDfbPtrBase::DoAddRef(void *ptr)
38 {
39 wxDummyDFBInterface *p = (wxDummyDFBInterface*)ptr;
40 p->AddRef(p);
41 }
42
43 /* static */
44 void wxDfbPtrBase::DoRelease(void *ptr)
45 {
46 wxDummyDFBInterface *p = (wxDummyDFBInterface*)ptr;
47 p->Release(p);
48 }