ReactOS 0.4.15-dev-8061-g57b775e
wingl.c File Reference
#include <precomp.h>
#include <debug.h>
Include dependency graph for wingl.c:

Go to the source code of this file.

Macros

#define NDEBUG
 

Typedefs

typedef int(WINAPICHOOSEPIXELFMT) (HDC, CONST PIXELFORMATDESCRIPTOR *)
 
typedef BOOL(WINAPISETPIXELFMT) (HDC, int, CONST PIXELFORMATDESCRIPTOR *)
 
typedef BOOL(WINAPISWAPBUFFERS) (HDC hdc)
 
typedef int(WINAPIDESCRIBEPIXELFMT) (HDC, int, UINT, LPPIXELFORMATDESCRIPTOR)
 
typedef int(WINAPIGETPIXELFMT) (HDC)
 

Functions

static BOOL OpenGLInitFunction (PCSTR name, FARPROC *funcptr)
 
static BOOL OpenGLEnable (void)
 
INT WINAPI ChoosePixelFormat (HDC hdc, CONST PIXELFORMATDESCRIPTOR *ppfd)
 
INT WINAPI DescribePixelFormat (HDC hdc, INT iPixelFormat, UINT nBytes, LPPIXELFORMATDESCRIPTOR ppfd)
 
INT WINAPI GetPixelFormat (HDC hdc)
 
BOOL WINAPI SetPixelFormat (HDC hdc, INT iPixelFormat, CONST PIXELFORMATDESCRIPTOR *ppfd)
 
BOOL WINAPI SwapBuffers (HDC hdc)
 

Variables

static CHOOSEPIXELFMT glChoosePixelFormat = NULL
 
static SETPIXELFMT glSetPixelFormat = NULL
 
static SWAPBUFFERS glSwapBuffers = NULL
 
static DESCRIBEPIXELFMT glDescribePixelFormat = NULL
 
static GETPIXELFMT glGetPixelFormat = NULL
 
HINSTANCE hOpenGL = NULL
 

Macro Definition Documentation

◆ NDEBUG

#define NDEBUG

Definition at line 26 of file wingl.c.

Typedef Documentation

◆ CHOOSEPIXELFMT

typedef int(WINAPI * CHOOSEPIXELFMT) (HDC, CONST PIXELFORMATDESCRIPTOR *)

Definition at line 31 of file wingl.c.

◆ DESCRIBEPIXELFMT

typedef int(WINAPI * DESCRIBEPIXELFMT) (HDC, int, UINT, LPPIXELFORMATDESCRIPTOR)

Definition at line 34 of file wingl.c.

◆ GETPIXELFMT

typedef int(WINAPI * GETPIXELFMT) (HDC)

Definition at line 35 of file wingl.c.

◆ SETPIXELFMT

typedef BOOL(WINAPI * SETPIXELFMT) (HDC, int, CONST PIXELFORMATDESCRIPTOR *)

Definition at line 32 of file wingl.c.

◆ SWAPBUFFERS

typedef BOOL(WINAPI * SWAPBUFFERS) (HDC hdc)

Definition at line 33 of file wingl.c.

Function Documentation

◆ ChoosePixelFormat()

INT WINAPI ChoosePixelFormat ( HDC  hdc,
CONST PIXELFORMATDESCRIPTOR ppfd 
)

Definition at line 113 of file wingl.c.

115{
117 if (OpenGLEnable() == FALSE)
118 return(0);
119
120 return(glChoosePixelFormat(hdc, ppfd));
121}
#define NULL
Definition: types.h:112
#define FALSE
Definition: types.h:117
static BOOL OpenGLEnable(void)
Definition: wingl.c:66
static CHOOSEPIXELFMT glChoosePixelFormat
Definition: wingl.c:38
HDC hdc
Definition: main.c:9
_In_ LONG _In_ ULONG _Out_opt_ PIXELFORMATDESCRIPTOR * ppfd
Definition: winddi.h:3490

◆ DescribePixelFormat()

INT WINAPI DescribePixelFormat ( HDC  hdc,
INT  iPixelFormat,
UINT  nBytes,
LPPIXELFORMATDESCRIPTOR  ppfd 
)

Definition at line 130 of file wingl.c.

134{
136 if (OpenGLEnable() == FALSE)
137 return(0);
138
139 return(glDescribePixelFormat(hdc, iPixelFormat, nBytes, ppfd));
140}
static DESCRIBEPIXELFMT glDescribePixelFormat
Definition: wingl.c:41
_In_ LONG iPixelFormat
Definition: winddi.h:3488

◆ GetPixelFormat()

INT WINAPI GetPixelFormat ( HDC  hdc)

Definition at line 149 of file wingl.c.

150{
151 if (glGetPixelFormat == NULL)
152 if (OpenGLEnable() == FALSE)
153 return(0);
154
155 return(glGetPixelFormat(hdc));
156}
static GETPIXELFMT glGetPixelFormat
Definition: wingl.c:42

Referenced by SetPixelFormat().

◆ OpenGLEnable()

static BOOL OpenGLEnable ( void  )
static

Definition at line 66 of file wingl.c.

67{
68 HMODULE hModOpengl32;
69 BOOL Ret = TRUE;
70
71 hModOpengl32 = LoadLibraryW(L"OPENGL32.DLL");
72 if (hModOpengl32 == NULL)
73 return FALSE;
74
76 (PVOID)hModOpengl32,
77 NULL) != NULL)
78 {
79 FreeLibrary(hModOpengl32);
80
81 /* NOTE: Even though another thread was faster loading the
82 library we can't just bail out here. We really need
83 to *try* to locate every function. This is slow but
84 thread-safe */
85 }
86
87 /* The cast is required on x64, because FARPROC has INT_PTR sized return */
88 if (!OpenGLInitFunction("wglChoosePixelFormat", (FARPROC*)&glChoosePixelFormat))
89 Ret = FALSE;
90
91 if (!OpenGLInitFunction("wglSetPixelFormat", (FARPROC*)&glSetPixelFormat))
92 Ret = FALSE;
93
94 if (!OpenGLInitFunction("wglSwapBuffers", (FARPROC*)&glSwapBuffers))
95 Ret = FALSE;
96
97 if (!OpenGLInitFunction("wglDescribePixelFormat", (FARPROC*)&glDescribePixelFormat))
98 Ret = FALSE;
99
100 if (!OpenGLInitFunction("wglGetPixelFormat", (FARPROC*)&glGetPixelFormat))
101 Ret = FALSE;
102
103 return Ret;
104}
#define TRUE
Definition: types.h:120
int(* FARPROC)()
Definition: compat.h:36
#define FreeLibrary(x)
Definition: compat.h:748
#define LoadLibraryW(x)
Definition: compat.h:747
unsigned int BOOL
Definition: ntddk_ex.h:94
HINSTANCE hOpenGL
Definition: wingl.c:47
static SETPIXELFMT glSetPixelFormat
Definition: wingl.c:39
static SWAPBUFFERS glSwapBuffers
Definition: wingl.c:40
static BOOL OpenGLInitFunction(PCSTR name, FARPROC *funcptr)
Definition: wingl.c:49
#define InterlockedCompareExchangePointer
Definition: interlocked.h:129
#define L(x)
Definition: ntvdm.h:50

Referenced by ChoosePixelFormat(), DescribePixelFormat(), GetPixelFormat(), SetPixelFormat(), and SwapBuffers().

◆ OpenGLInitFunction()

static BOOL OpenGLInitFunction ( PCSTR  name,
FARPROC funcptr 
)
static

Definition at line 49 of file wingl.c.

51{
52 PVOID func;
53
55 if (func != NULL)
56 {
58 func,
59 NULL);
60 return TRUE;
61 }
62
63 return FALSE;
64}
#define GetProcAddress(x, y)
Definition: compat.h:753
GLenum func
Definition: glext.h:6028
Definition: name.c:39
void * PVOID
Definition: typedefs.h:50

Referenced by OpenGLEnable().

◆ SetPixelFormat()

BOOL WINAPI SetPixelFormat ( HDC  hdc,
INT  iPixelFormat,
CONST PIXELFORMATDESCRIPTOR ppfd 
)

Definition at line 165 of file wingl.c.

168{
169 /* Can only be set once */
171 if(current) return current == iPixelFormat ;
172
173 if (glSetPixelFormat == NULL)
174 if (OpenGLEnable() == FALSE)
175 return(0);
176
178}
INT WINAPI GetPixelFormat(HDC hdc)
Definition: wingl.c:149
struct task_struct * current
Definition: linux.c:32
int32_t INT
Definition: typedefs.h:58

◆ SwapBuffers()

BOOL WINAPI SwapBuffers ( HDC  hdc)

Definition at line 187 of file wingl.c.

188{
189 if (glSwapBuffers == NULL)
190 if (OpenGLEnable() == FALSE)
191 return(0);
192
193
194 return(glSwapBuffers(hdc));
195}

Referenced by DrawScene(), OnPaint(), ScreenSaverProc(), test_destroy(), test_destroy_read(), test_message_window(), and test_setpixelformat().

Variable Documentation

◆ glChoosePixelFormat

CHOOSEPIXELFMT glChoosePixelFormat = NULL
static

Definition at line 38 of file wingl.c.

Referenced by ChoosePixelFormat(), and OpenGLEnable().

◆ glDescribePixelFormat

DESCRIBEPIXELFMT glDescribePixelFormat = NULL
static

Definition at line 41 of file wingl.c.

Referenced by DescribePixelFormat(), and OpenGLEnable().

◆ glGetPixelFormat

GETPIXELFMT glGetPixelFormat = NULL
static

Definition at line 42 of file wingl.c.

Referenced by GetPixelFormat(), and OpenGLEnable().

◆ glSetPixelFormat

SETPIXELFMT glSetPixelFormat = NULL
static

Definition at line 39 of file wingl.c.

Referenced by OpenGLEnable(), and SetPixelFormat().

◆ glSwapBuffers

SWAPBUFFERS glSwapBuffers = NULL
static

Definition at line 40 of file wingl.c.

Referenced by OpenGLEnable(), and SwapBuffers().

◆ hOpenGL

HINSTANCE hOpenGL = NULL

Definition at line 47 of file wingl.c.

Referenced by OpenGLEnable(), and OpenGLInitFunction().