summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--chrome/browser/ui/views/chrome_views_delegate.cc4
-rw-r--r--ui/base/ui_base_switches.cc3
-rw-r--r--ui/base/ui_base_switches.h1
-rw-r--r--ui/views/widget/widget_hwnd_utils.cc5
4 files changed, 13 insertions, 0 deletions
diff --git a/chrome/browser/ui/views/chrome_views_delegate.cc b/chrome/browser/ui/views/chrome_views_delegate.cc
index 7a16efc..60db143 100644
--- a/chrome/browser/ui/views/chrome_views_delegate.cc
+++ b/chrome/browser/ui/views/chrome_views_delegate.cc
@@ -14,6 +14,7 @@
#include "chrome/browser/profiles/profile_manager.h"
#include "chrome/browser/ui/views/accessibility/accessibility_event_router_views.h"
#include "chrome/common/pref_names.h"
+#include "ui/base/ui_base_switches.h"
#include "ui/gfx/rect.h"
#include "ui/gfx/screen.h"
#include "ui/views/widget/native_widget.h"
@@ -194,6 +195,9 @@ void ChromeViewsDelegate::OnBeforeWidgetInit(
if (base::win::GetVersion() >= base::win::VERSION_VISTA) {
BOOL composition_enabled = FALSE;
HRESULT hr = DwmIsCompositionEnabled(&composition_enabled);
+ if (CommandLine::ForCurrentProcess()->HasSwitch(
+ switches::kDisableDwmComposition))
+ composition_enabled = FALSE;
if (SUCCEEDED(hr) && composition_enabled) {
if (chrome::GetActiveDesktop() != chrome::HOST_DESKTOP_TYPE_ASH &&
params->parent &&
diff --git a/ui/base/ui_base_switches.cc b/ui/base/ui_base_switches.cc
index ef10e6d..80fcb0a 100644
--- a/ui/base/ui_base_switches.cc
+++ b/ui/base/ui_base_switches.cc
@@ -6,6 +6,9 @@
namespace switches {
+// Disables use of DWM composition for top level windows.
+const char kDisableDwmComposition[] = "disable-dwm-composition";
+
// Disables touch adjustment.
const char kDisableTouchAdjustment[] = "disable-touch-adjustment";
diff --git a/ui/base/ui_base_switches.h b/ui/base/ui_base_switches.h
index 6dfeded..1319563 100644
--- a/ui/base/ui_base_switches.h
+++ b/ui/base/ui_base_switches.h
@@ -12,6 +12,7 @@
namespace switches {
+UI_EXPORT extern const char kDisableDwmComposition[];
UI_EXPORT extern const char kDisableTouchAdjustment[];
UI_EXPORT extern const char kDisableViewsTextfield[];
UI_EXPORT extern const char kEnableBezelTouch[];
diff --git a/ui/views/widget/widget_hwnd_utils.cc b/ui/views/widget/widget_hwnd_utils.cc
index 346a668..6e66e59 100644
--- a/ui/views/widget/widget_hwnd_utils.cc
+++ b/ui/views/widget/widget_hwnd_utils.cc
@@ -6,8 +6,10 @@
#include <dwmapi.h>
+#include "base/command_line.h"
#include "base/win/windows_version.h"
#include "ui/base/l10n/l10n_util_win.h"
+#include "ui/base/ui_base_switches.h"
#include "ui/views/widget/widget_delegate.h"
#include "ui/views/win/hwnd_message_handler.h"
@@ -59,6 +61,9 @@ void CalculateWindowStylesFromInitParams(
if (base::win::GetVersion() >= base::win::VERSION_VISTA) {
BOOL enabled = FALSE;
HRESULT hr = DwmIsCompositionEnabled(&enabled);
+ if (CommandLine::ForCurrentProcess()->HasSwitch(
+ switches::kDisableDwmComposition))
+ enabled = FALSE;
if (SUCCEEDED(hr) && (enabled == TRUE))
*ex_style |= WS_EX_COMPOSITED;
}