Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(112)

Unified Diff: ui/display/chromeos/x11/native_display_delegate_x11.cc

Issue 253513002: disable crtcs bigger than new screen size during mode switch (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 6 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « ui/display/chromeos/x11/native_display_delegate_x11.h ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: ui/display/chromeos/x11/native_display_delegate_x11.cc
diff --git a/ui/display/chromeos/x11/native_display_delegate_x11.cc b/ui/display/chromeos/x11/native_display_delegate_x11.cc
index 3dff81bb31a6c4cf340b1cdbf9c5d27c52f9a3df..238d65e3122cb2e3b827e397be3d9cd5b4c897f3 100644
--- a/ui/display/chromeos/x11/native_display_delegate_x11.cc
+++ b/ui/display/chromeos/x11/native_display_delegate_x11.cc
@@ -297,7 +297,7 @@ void NativeDisplayDelegateX11::CreateFrameBuffer(const gfx::Size& size) {
if (size.width() == current_width && size.height() == current_height)
return;
- DestroyUnusedCrtcs();
+ DestroyUnusedCrtcs(size);
int mm_width = size.width() * kPixelsToMmScale;
int mm_height = size.height() * kPixelsToMmScale;
XRRSetScreenSize(
@@ -518,7 +518,7 @@ bool NativeDisplayDelegateX11::SetHDCPState(const DisplaySnapshot& output,
}
}
-void NativeDisplayDelegateX11::DestroyUnusedCrtcs() {
+void NativeDisplayDelegateX11::DestroyUnusedCrtcs(const gfx::Size& new_size) {
CHECK(screen_) << "Server not grabbed";
// Setting the screen size will fail if any CRTC doesn't fit afterwards.
// At the same time, turning CRTCs off and back on uses up a lot of time.
@@ -551,12 +551,15 @@ void NativeDisplayDelegateX11::DestroyUnusedCrtcs() {
if (mode_info) {
mode = static_cast<const DisplayModeX11*>(mode_info)->mode_id();
- // In case our CRTC doesn't fit in our current framebuffer, disable it.
+ // In case our CRTC doesn't fit in common area of our current and about
+ // to be resized framebuffer, disable it.
// It'll get reenabled after we resize the framebuffer.
- int current_width = DisplayWidth(display_, DefaultScreen(display_));
- int current_height = DisplayHeight(display_, DefaultScreen(display_));
- if (mode_info->size().width() > current_width ||
- mode_info->size().height() > current_height) {
+ int max_width = std::min(DisplayWidth(display_,
+ DefaultScreen(display_)), new_size.width());
Daniel Kurtz 2014/04/25 04:35:29 I think this would have been easier to read: int
+ int max_height = std::min(DisplayHeight(display_,
+ DefaultScreen(display_)), new_size.height());
+ if (mode_info->size().width() > max_width ||
+ mode_info->size().height() > max_height) {
mode = None;
output = None;
mode_info = NULL;
« no previous file with comments | « ui/display/chromeos/x11/native_display_delegate_x11.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698