*/
int iPixelFormat = get_matching_pixel_format(hDC);
if (iPixelFormat)
- fb = stw_framebuffer_create(hDC, iPixelFormat, STW_FRAMEBUFFER_WGL_WINDOW);
+ fb = stw_framebuffer_create(WindowFromDC(hDC), iPixelFormat, STW_FRAMEBUFFER_WGL_WINDOW);
if (!fb)
return NULL;
}
DWORD dwStyle;
RECT rect;
HWND hWnd;
- HDC hDC;
int iDisplayablePixelFormat;
PIXELFORMATDESCRIPTOR pfd;
BOOL bRet;
assert(rect.bottom - rect.top == iHeight);
#endif
- hDC = GetDC(hWnd);
- if (!hDC) {
- return 0;
- }
-
/*
* We can't pass non-displayable pixel formats to GDI, which is why we
* create the framebuffer object before calling SetPixelFormat().
*/
- fb = stw_framebuffer_create(hDC, iPixelFormat, STW_FRAMEBUFFER_PBUFFER);
+ fb = stw_framebuffer_create(hWnd, iPixelFormat, STW_FRAMEBUFFER_PBUFFER);
if (!fb) {
SetLastError(ERROR_NO_SYSTEM_RESOURCES);
return NULL;
* We need to set a displayable pixel format on the hidden window DC
* so that wglCreateContext and wglMakeCurrent are not overruled by GDI.
*/
- bRet = SetPixelFormat(hDC, iDisplayablePixelFormat, &pfd);
+ bRet = SetPixelFormat(GetDC(hWnd), iDisplayablePixelFormat, &pfd);
assert(bRet);
return (HPBUFFERARB)fb;
* with its mutex locked.
*/
struct stw_framebuffer *
-stw_framebuffer_create(HDC hdc, int iPixelFormat, enum stw_framebuffer_owner owner)
+stw_framebuffer_create(HWND hWnd, int iPixelFormat, enum stw_framebuffer_owner owner)
{
- HWND hWnd;
struct stw_framebuffer *fb;
const struct stw_pixelformat_info *pfi;
- /* We only support drawing to a window. */
- hWnd = WindowFromDC( hdc );
- if (!hWnd)
- return NULL;
-
fb = CALLOC_STRUCT( stw_framebuffer );
if (fb == NULL)
return NULL;
if (stw_dev->stw_winsys->create_framebuffer)
fb->winsys_framebuffer =
- stw_dev->stw_winsys->create_framebuffer(stw_dev->screen, hdc, iPixelFormat);
+ stw_dev->stw_winsys->create_framebuffer(stw_dev->screen, hWnd, iPixelFormat);
/*
* We often need a displayable pixel format to make GDI happy. Set it
return bPbuffer;
}
- fb = stw_framebuffer_create(hdc, iPixelFormat, STW_FRAMEBUFFER_WGL_WINDOW);
+ fb = stw_framebuffer_create(WindowFromDC(hdc), iPixelFormat, STW_FRAMEBUFFER_WGL_WINDOW);
if (!fb) {
return FALSE;
}
* must be called when done
*/
struct stw_framebuffer *
-stw_framebuffer_create(HDC hdc, int iPixelFormat, enum stw_framebuffer_owner owner);
+stw_framebuffer_create(HWND hwnd, int iPixelFormat, enum stw_framebuffer_owner owner);
/**
*/
struct stw_winsys_framebuffer *
(*create_framebuffer)( struct pipe_screen *screen,
- HDC hDC,
+ HWND hWnd,
int iPixelFormat );
/**
static struct stw_winsys_framebuffer *
gdi_create_framebuffer(struct pipe_screen *screen,
- HDC hDC,
+ HWND hWnd,
int iPixelFormat)
{
- return d3d12_wgl_create_framebuffer(screen, hDC, iPixelFormat);
+ return d3d12_wgl_create_framebuffer(screen, hWnd, iPixelFormat);
}
static const char *
static struct stw_winsys_framebuffer *
wgl_create_framebuffer(struct pipe_screen *screen,
- HDC hDC,
+ HWND hWnd,
int iPixelFormat)
{
#ifdef GALLIUM_D3D12
if (use_d3d12)
- return d3d12_wgl_create_framebuffer(screen, hDC, iPixelFormat);
+ return d3d12_wgl_create_framebuffer(screen, hWnd, iPixelFormat);
#endif
return NULL;
}
struct stw_winsys_framebuffer *
d3d12_wgl_create_framebuffer(struct pipe_screen *screen,
- HDC hDC,
+ HWND hWnd,
int iPixelFormat)
{
const struct stw_pixelformat_info *pfi =
new (fb) struct d3d12_wgl_framebuffer();
- fb->window = WindowFromDC(hDC);
+ fb->window = hWnd;
fb->screen = d3d12_screen(screen);
fb->base.destroy = d3d12_wgl_framebuffer_destroy;
fb->base.resize = d3d12_wgl_framebuffer_resize;
struct stw_winsys_framebuffer *
d3d12_wgl_create_framebuffer(struct pipe_screen *screen,
- HDC hDC,
+ HWND hWnd,
int iPixelFormat);
#ifdef __cplusplus