From cffe7c8bd0397f8d54e2da16a21c7db4345766b8 Mon Sep 17 00:00:00 2001 From: José Fonseca Date: Fri, 3 Jul 2009 14:21:55 +0100 Subject: wgl: Lookup framebuffers by HWND whenever possible. Some applications create several HDCs for the same window, so spite the WGL API is geared towards HDCs it is not reliable searching by HDC. --- src/gallium/state_trackers/wgl/shared/stw_framebuffer.c | 10 ++++++++++ 1 file changed, 10 insertions(+) (limited to 'src/gallium/state_trackers/wgl/shared') diff --git a/src/gallium/state_trackers/wgl/shared/stw_framebuffer.c b/src/gallium/state_trackers/wgl/shared/stw_framebuffer.c index 7d0e8f4648..78a2dbc4d7 100644 --- a/src/gallium/state_trackers/wgl/shared/stw_framebuffer.c +++ b/src/gallium/state_trackers/wgl/shared/stw_framebuffer.c @@ -300,8 +300,18 @@ struct stw_framebuffer * stw_framebuffer_from_hdc_locked( HDC hdc ) { + HWND hwnd; struct stw_framebuffer *fb; + /* + * Some applications create and use several HDCs for the same window, so + * looking up the framebuffer by the HDC is not reliable. Use HWND whenever + * possible. + */ + hwnd = WindowFromDC(hdc); + if(hwnd) + return stw_framebuffer_from_hwnd_locked(hwnd); + for (fb = stw_dev->fb_head; fb != NULL; fb = fb->next) if (fb->hDC == hdc) break; -- cgit v1.2.3