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

Unified Diff: content/browser/gpu/gpu_data_manager_impl_private.cc

Issue 14947002: Updated OSX to blacklist multisampling when multiple monitors are connected (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fixed Windows build warning Created 7 years, 7 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
Index: content/browser/gpu/gpu_data_manager_impl_private.cc
diff --git a/content/browser/gpu/gpu_data_manager_impl_private.cc b/content/browser/gpu/gpu_data_manager_impl_private.cc
index fbc776cb9be2cf1e07915ce5184724a4a8f1e23a..74cef694525ef96d89dad54e3072667335ee7d33 100644
--- a/content/browser/gpu/gpu_data_manager_impl_private.cc
+++ b/content/browser/gpu/gpu_data_manager_impl_private.cc
@@ -216,12 +216,25 @@ std::string IntSetToString(const std::set<int>& list) {
void DisplayReconfigCallback(CGDirectDisplayID display,
CGDisplayChangeSummaryFlags flags,
void* gpu_data_manager) {
- if (flags & kCGDisplayAddFlag) {
- GpuDataManagerImpl* manager =
- reinterpret_cast<GpuDataManagerImpl*>(gpu_data_manager);
- DCHECK(manager);
- manager->HandleGpuSwitch();
+ if(flags == kCGDisplayBeginConfigurationFlag)
+ return; // This call contains no information about the display change
+
+ GpuDataManagerImpl* manager =
+ reinterpret_cast<GpuDataManagerImpl*>(gpu_data_manager);
+ DCHECK(manager);
+
+ uint32_t displayCount;
+ CGGetActiveDisplayList(0, NULL, &displayCount);
+
+ bool fireGpuSwitch = flags & kCGDisplayAddFlag;
+
+ if (displayCount != manager->GetDisplayCount()) {
+ manager->SetDisplayCount(displayCount);
+ fireGpuSwitch = true;
}
+
+ if (fireGpuSwitch)
+ manager->HandleGpuSwitch();
}
#endif // OS_MACOSX
@@ -342,6 +355,14 @@ size_t GpuDataManagerImplPrivate::GetBlacklistedFeatureCount() const {
return blacklisted_features_.size();
}
+void GpuDataManagerImplPrivate::SetDisplayCount(unsigned int display_count) {
+ display_count_ = display_count;
+}
+
+unsigned int GpuDataManagerImplPrivate::GetDisplayCount() const {
+ return display_count_;
+}
+
gpu::GPUInfo GpuDataManagerImplPrivate::GetGPUInfo() const {
return gpu_info_;
}
@@ -750,7 +771,8 @@ void GpuDataManagerImplPrivate::UpdateRendererWebPrefs(
prefs->flash_stage3d_baseline_enabled = false;
if (IsFeatureBlacklisted(gpu::GPU_FEATURE_TYPE_ACCELERATED_2D_CANVAS))
prefs->accelerated_2d_canvas_enabled = false;
- if (IsFeatureBlacklisted(gpu::GPU_FEATURE_TYPE_MULTISAMPLING))
+ if (IsFeatureBlacklisted(gpu::GPU_FEATURE_TYPE_MULTISAMPLING)
+ || display_count_ > 1)
prefs->gl_multisampling_enabled = false;
if (IsFeatureBlacklisted(gpu::GPU_FEATURE_TYPE_3D_CSS)) {
prefs->accelerated_compositing_for_3d_transforms_enabled = false;
@@ -899,7 +921,8 @@ GpuDataManagerImplPrivate::GpuDataManagerImplPrivate(
update_histograms_(true),
window_count_(0),
domain_blocking_enabled_(true),
- owner_(owner) {
+ owner_(owner),
+ display_count_(0) {
DCHECK(owner_);
CommandLine* command_line = CommandLine::ForCurrentProcess();
if (command_line->HasSwitch(switches::kDisableAcceleratedCompositing)) {
@@ -918,6 +941,7 @@ GpuDataManagerImplPrivate::GpuDataManagerImplPrivate(
}
#if defined(OS_MACOSX)
+ CGGetActiveDisplayList (0, NULL, &display_count_);
CGDisplayRegisterReconfigurationCallback(DisplayReconfigCallback, owner_);
#endif // OS_MACOSX
}
« no previous file with comments | « content/browser/gpu/gpu_data_manager_impl_private.h ('k') | content/browser/renderer_host/render_process_host_impl.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698