diff options
author | zmo@google.com <zmo@google.com@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-02-16 18:48:23 +0000 |
---|---|---|
committer | zmo@google.com <zmo@google.com@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-02-16 18:48:23 +0000 |
commit | 491a35608c47812cf86820554133586055798526 (patch) | |
tree | 879c5e3fff4270b7bdace853c0517f3aa0d74adc /o3d/plugin | |
parent | 575c4e175880c7ba333e2d734dc7bb5a73b10f3b (diff) | |
download | chromium_src-491a35608c47812cf86820554133586055798526.zip chromium_src-491a35608c47812cf86820554133586055798526.tar.gz chromium_src-491a35608c47812cf86820554133586055798526.tar.bz2 |
Fix the software renderer "soft" fullscreen mode using the wrong monitor bug.
Review URL: http://codereview.chromium.org/606005
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@39107 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'o3d/plugin')
-rw-r--r-- | o3d/plugin/win/main_win.cc | 29 |
1 files changed, 25 insertions, 4 deletions
diff --git a/o3d/plugin/win/main_win.cc b/o3d/plugin/win/main_win.cc index 7641611..f9be934 100644 --- a/o3d/plugin/win/main_win.cc +++ b/o3d/plugin/win/main_win.cc @@ -720,6 +720,25 @@ void ReplaceContentWindow(HWND content_hwnd, ::ShowWindow(content_hwnd, SW_SHOW); } +// Get the screen rect of the monitor the window is on, in virtual screen +// coordinates. +// Return true on success, false on failure. +bool GetScreenRect(HWND hwnd, + RECT* rect) { + HMONITOR monitor = MonitorFromWindow(hwnd, MONITOR_DEFAULTTONULL); + if (monitor == NULL) + return false; + + MONITORINFO monitor_info; + monitor_info.cbSize = sizeof(monitor_info); + if (GetMonitorInfo(monitor, &monitor_info)) { + *rect = monitor_info.rcMonitor; + return true; + } else { + return false; + } +} + } // namespace anonymous #if defined(O3D_INTERNAL_PLUGIN) @@ -958,10 +977,12 @@ bool PluginObject::RequestFullscreenDisplay() { // We need to resize the full-screen window to the desired size of // the display mode early, before calling // Renderer::GoFullscreen(). - o3d::DisplayMode mode; - if (GetDisplayMode(fullscreen_region_mode_id_, &mode)) { - ::SetWindowPos(GetContentHWnd(), HWND_TOP, 0, 0, - mode.width(), mode.height(), + RECT screen_rect; + if (GetScreenRect(GetPluginHWnd(), &screen_rect)) { + ::SetWindowPos(GetContentHWnd(), HWND_TOP, + screen_rect.left, screen_rect.top, + screen_rect.right - screen_rect.left + 1, + screen_rect.bottom - screen_rect.top + 1, SWP_NOZORDER | SWP_NOREPOSITION | SWP_ASYNCWINDOWPOS); DisplayWindowWindows display; display.set_hwnd(GetContentHWnd()); |