Skip to content

Debug macOS compositor throttling

Choose a tag to compare

@deepak1556 deepak1556 released this 19 Dec 14:03
4b09aa4
Contents in this change
diff --git a/content/browser/renderer_host/render_widget_host_view_mac.mm b/content/browser/renderer_host/render_widget_host_view_mac.mm
index 429e567e6f3ca..de7ce4680cfbd 100644
--- a/content/browser/renderer_host/render_widget_host_view_mac.mm
+++ b/content/browser/renderer_host/render_widget_host_view_mac.mm
@@ -473,6 +473,8 @@
 
 void RenderWidgetHostViewMac::ShowWithVisibility(
     PageVisibilityState page_visibility) {
+  LOG(WARNING) << "RenderWidgetHostViewMac::ShowWithVisibility: "
+               << static_cast<int>(page_visibility);
   is_visible_ = true;
   ns_view_->SetVisible(is_visible_);
   browser_compositor_->SetViewVisible(is_visible_);
@@ -480,6 +482,7 @@
 }
 
 void RenderWidgetHostViewMac::Hide() {
+  LOG(WARNING) << "RenderWidgetHostViewMac::Hide";
   is_visible_ = false;
   ns_view_->SetVisible(is_visible_);
   browser_compositor_->SetViewVisible(is_visible_);
diff --git a/ui/compositor/compositor.cc b/ui/compositor/compositor.cc
index b967896479c7f..7c3760b3d368e 100644
--- a/ui/compositor/compositor.cc
+++ b/ui/compositor/compositor.cc
@@ -221,6 +221,8 @@ Compositor::Compositor(const viz::FrameSinkId& frame_sink_id,
   settings.wait_for_all_pipeline_stages_before_draw =
       command_line->HasSwitch(switches::kRunAllCompositorStagesBeforeDraw);
 
+  LOG(WARNING) << "Compositor throttling is "
+               << (enable_compositing_based_throttling ? "enabled" : "disabled");
   settings.enable_compositing_based_throttling =
       enable_compositing_based_throttling;
 
diff --git a/ui/compositor/recyclable_compositor_mac.cc b/ui/compositor/recyclable_compositor_mac.cc
index 54b8fb26c73e5..8560f58afd97c 100644
--- a/ui/compositor/recyclable_compositor_mac.cc
+++ b/ui/compositor/recyclable_compositor_mac.cc
@@ -4,6 +4,7 @@
 
 #include "ui/compositor/recyclable_compositor_mac.h"
 
+#include "base/debug/stack_trace.h"
 #include "base/functional/bind.h"
 #include "base/no_destructor.h"
 #include "base/task/single_thread_task_runner.h"
@@ -43,6 +44,9 @@ RecyclableCompositorMac::RecyclableCompositorMac(
                   context_factory,
                   GetCompositorTaskRunner(),
                   features::IsPixelCanvasRecordingEnabled()) {
+  LOG(WARNING)
+      << "Creating RecyclableCompositorMac with FrameSinkId: "
+      << compositor_.frame_sink_id().ToString();
   compositor_.SetAcceleratedWidget(
       accelerated_widget_mac_->accelerated_widget());
   Suspend();
@@ -54,12 +58,14 @@ RecyclableCompositorMac::~RecyclableCompositorMac() {
 }
 
 void RecyclableCompositorMac::Suspend() {
+  base::debug::StackTrace().Print();
   // Requests a compositor lock without a timeout.
   compositor_suspended_lock_ =
       compositor_.GetCompositorLock(nullptr, base::TimeDelta());
 }
 
 void RecyclableCompositorMac::Unsuspend() {
+  base::debug::StackTrace().Print();
   compositor_suspended_lock_ = nullptr;
 }
 
diff --git a/ui/views/cocoa/native_widget_mac_ns_window_host.mm b/ui/views/cocoa/native_widget_mac_ns_window_host.mm
index 68a210eaf34d6..7c9688c629508 100644
--- a/ui/views/cocoa/native_widget_mac_ns_window_host.mm
+++ b/ui/views/cocoa/native_widget_mac_ns_window_host.mm
@@ -1068,6 +1068,8 @@ void HandleAccelerator(const ui::Accelerator& accelerator,
 void NativeWidgetMacNSWindowHost::OnVisibilityChanged(bool window_visible) {
   const bool was_visible_on_screen = IsVisibleOnScreen();
   is_visible_ = window_visible;
+  LOG(WARNING) << "OnVisibilityChanged: " << window_visible
+               << " WasVisibleOnScreen: " << was_visible_on_screen;
   if (compositor_) {
     layer()->SetVisible(window_visible);
     if (window_visible) {
diff --git a/shell/app/electron_library_main.mm b/shell/app/electron_library_main.mm
index 555c89b9e1..5ecdfc3e97 100644
--- a/shell/app/electron_library_main.mm
+++ b/shell/app/electron_library_main.mm
@@ -6,6 +6,9 @@
 
 #include "shell/app/electron_library_main.h"
 
+#include <dlfcn.h>
+#include <iostream>
+
 #include "base/apple/bundle_locations.h"
 #include "base/apple/scoped_nsautorelease_pool.h"
 #include "base/at_exit.h"
@@ -21,6 +24,11 @@
 #include "uv.h"
 
 int ElectronMain(int argc, char* argv[]) {
+  Dl_info info;
+  if (dladdr(reinterpret_cast<void*>(&ElectronMain), &info)) {
+    std::cerr << "Bundle Path: " << info.dli_fname << std::endl;
+    std::cerr << "Load Address: " << info.dli_fbase << std::endl;
+  }
   argv = uv_setup_args(argc, argv);
   base::CommandLine::Init(argc, argv);
   electron::ElectronCommandLine::Init(argc, argv);