summaryrefslogtreecommitdiffstats
path: root/o3d/plugin
diff options
context:
space:
mode:
authorzmo@google.com <zmo@google.com@0039d316-1c4b-4281-b951-d872f2087c98>2010-02-16 18:48:23 +0000
committerzmo@google.com <zmo@google.com@0039d316-1c4b-4281-b951-d872f2087c98>2010-02-16 18:48:23 +0000
commit491a35608c47812cf86820554133586055798526 (patch)
tree879c5e3fff4270b7bdace853c0517f3aa0d74adc /o3d/plugin
parent575c4e175880c7ba333e2d734dc7bb5a73b10f3b (diff)
downloadchromium_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.cc29
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());