[PATCH 0/1] MR7768: winemac: Get DC pixel format from winemac-internal objects.
Fixes: 84708d102b8d5a4234f935ce94507c32d5f01925 -- https://gitlab.winehq.org/wine/wine/-/merge_requests/7768
From: Rémi Bernon <rbernon(a)codeweavers.com> Fixes: 84708d102b8d5a4234f935ce94507c32d5f01925 --- dlls/winemac.drv/opengl.c | 38 +++++++++++++++++++++++++++++++++++++- 1 file changed, 37 insertions(+), 1 deletion(-) diff --git a/dlls/winemac.drv/opengl.c b/dlls/winemac.drv/opengl.c index 34315219d3c..429c3913f6d 100644 --- a/dlls/winemac.drv/opengl.c +++ b/dlls/winemac.drv/opengl.c @@ -2276,6 +2276,42 @@ static BOOL macdrv_wglBindTexImageARB(struct wgl_pbuffer *pbuffer, int iBuffer) return GL_TRUE; } +static int get_dc_pixel_format(HDC hdc) +{ + int format; + HWND hwnd; + + if ((hwnd = NtUserWindowFromDC(hdc))) + { + struct macdrv_win_data *data; + + if (!(data = get_win_data(hwnd))) + { + FIXME("DC for window %p of other process: not implemented\n", hwnd); + return 0; + } + + format = data->pixel_format; + release_win_data(data); + } + else + { + struct wgl_pbuffer *pbuffer; + + pthread_mutex_lock(&dc_pbuffers_mutex); + pbuffer = (struct wgl_pbuffer*)CFDictionaryGetValue(dc_pbuffers, hdc); + if (pbuffer) + format = pbuffer->format; + else + { + WARN("no window or pbuffer for DC %p\n", hdc); + format = 0; + } + pthread_mutex_unlock(&dc_pbuffers_mutex); + } + + return format; +} /*********************************************************************** * macdrv_wglCreateContextAttribsARB @@ -2295,7 +2331,7 @@ static struct wgl_context *macdrv_wglCreateContextAttribsARB(HDC hdc, TRACE("hdc %p, share_context %p, attrib_list %p\n", hdc, share_context, attrib_list); - format = opengl_funcs.p_wglGetPixelFormat(hdc); + format = get_dc_pixel_format(hdc); if (!is_valid_pixel_format(format)) { -- GitLab https://gitlab.winehq.org/wine/wine/-/merge_requests/7768
participants (1)
-
Rémi Bernon