From fcbd3208fc18fb71bc32282fc9962f069deb1dfc Mon Sep 17 00:00:00 2001 From: Alexander Larsson Date: Thu, 29 Apr 2010 13:34:44 +0200 Subject: client: Report window format right for win32 --- client/windows/red_window.cpp | 16 ++++++++++++---- client/windows/red_window_p.h | 2 ++ 2 files changed, 14 insertions(+), 4 deletions(-) (limited to 'client/windows') diff --git a/client/windows/red_window.cpp b/client/windows/red_window.cpp index 80a282a0..1be94ffe 100644 --- a/client/windows/red_window.cpp +++ b/client/windows/red_window.cpp @@ -348,6 +348,17 @@ void RedWindow_p::create(RedWindow& red_window, PixelsSource_p& pixels_source) } _win = window; pixels_source.dc = dc; + + int depth = GetDeviceCaps(dc, BITSPIXEL); + switch (depth) { + case 16: + _format = RedDrawable::RGB16_555; + break; + case 32: + default: + _format = RedDrawable::RGB32; + break; + } SetWindowLong(window, GWL_USERDATA, (LONG)&red_window); SetWindowLong(window, GWL_WNDPROC, (LONG)WindowProc); } @@ -366,10 +377,7 @@ void RedWindow_p::destroy(PixelsSource_p& pixels_source) RedDrawable::Format RedWindow::get_format() { - /* TODO: Windows will convert types when - blitting, so this works (and is what we did before). - but it would be better to return the right format here */ - return RedDrawable::RGB32; + return _format; } diff --git a/client/windows/red_window_p.h b/client/windows/red_window_p.h index 0005dac7..38426c7a 100644 --- a/client/windows/red_window_p.h +++ b/client/windows/red_window_p.h @@ -19,6 +19,7 @@ #define _H_RED_WINDOW_P #include +#include class RedWindow; class Menu; @@ -53,6 +54,7 @@ public: protected: HWND _win; + RedDrawable::Format _format; uint32_t _modal_refs; HMODULE _no_taskmgr_dll; HHOOK _no_taskmgr_hook; -- cgit