[OPENGL32] Fix wglDescribePixelFormat

This commit is contained in:
Bernhard Feichtinger 2018-11-13 20:52:30 +01:00 committed by Pierre Schweitzer
parent 8a0495063b
commit 9cc37704f5

View file

@ -19,7 +19,7 @@ LIST_ENTRY ContextListHead;
/* FIXME: suboptimal */ /* FIXME: suboptimal */
static static
struct wgl_dc_data* struct wgl_dc_data*
get_dc_data(HDC hdc) get_dc_data_ex(HDC hdc, INT format, UINT size, PIXELFORMATDESCRIPTOR *descr)
{ {
HWND hwnd = NULL; HWND hwnd = NULL;
struct wgl_dc_data* data; struct wgl_dc_data* data;
@ -76,7 +76,7 @@ get_dc_data(HDC hdc)
data->icd_data = IntGetIcdData(hdc); data->icd_data = IntGetIcdData(hdc);
/* Get the number of available formats for this DC once and for all */ /* Get the number of available formats for this DC once and for all */
if(data->icd_data) if(data->icd_data)
data->nb_icd_formats = data->icd_data->DrvDescribePixelFormat(hdc, 0, 0, NULL); data->nb_icd_formats = data->icd_data->DrvDescribePixelFormat(hdc, format, size, descr);
else else
data->nb_icd_formats = 0; data->nb_icd_formats = 0;
TRACE("ICD %S has %u formats for HDC %x.\n", data->icd_data ? data->icd_data->DriverName : NULL, data->nb_icd_formats, hdc); TRACE("ICD %S has %u formats for HDC %x.\n", data->icd_data ? data->icd_data->DriverName : NULL, data->nb_icd_formats, hdc);
@ -87,6 +87,13 @@ get_dc_data(HDC hdc)
return data; return data;
} }
static
struct wgl_dc_data*
get_dc_data(HDC hdc)
{
return get_dc_data_ex(hdc, 0, 0, NULL);
}
void release_dc_data(struct wgl_dc_data* dc_data) void release_dc_data(struct wgl_dc_data* dc_data)
{ {
(void)dc_data; (void)dc_data;
@ -115,7 +122,7 @@ struct wgl_context* get_context(HGLRC hglrc)
INT WINAPI wglDescribePixelFormat(HDC hdc, INT format, UINT size, PIXELFORMATDESCRIPTOR *descr ) INT WINAPI wglDescribePixelFormat(HDC hdc, INT format, UINT size, PIXELFORMATDESCRIPTOR *descr )
{ {
struct wgl_dc_data* dc_data = get_dc_data(hdc); struct wgl_dc_data* dc_data = get_dc_data_ex(hdc, format, size, descr);
INT ret; INT ret;
if(!dc_data) if(!dc_data)
@ -131,7 +138,7 @@ INT WINAPI wglDescribePixelFormat(HDC hdc, INT format, UINT size, PIXELFORMATDES
release_dc_data(dc_data); release_dc_data(dc_data);
return ret; return ret;
} }
if((format == 0) || (format > ret) || (size != sizeof(*descr))) if((format <= 0) || (format > ret) || (size < sizeof(*descr)))
{ {
release_dc_data(dc_data); release_dc_data(dc_data);
SetLastError(ERROR_INVALID_PARAMETER); SetLastError(ERROR_INVALID_PARAMETER);