Blob Blame History Raw
From a8d0508cf299a58b2a659d6017b049db121de8ba Mon Sep 17 00:00:00 2001
From: Rafael Kitover <rkitover@gmail.com>
Date: Mon, 2 Jul 2018 18:32:18 -0700
Subject: [PATCH] use GetWindow()->Refresh() in Wayland only

Some people are reporting stuttering, and @retro-wertz tested both
DrawArea() and Refresh() on wxgtk3 under xorg and found that the
Refresh() method produces more stuttering.

Change the compile check for wxgtk2 to a runtime check for wayland, and
use Refresh() under Wayland only.
---
 src/wx/panel.cpp | 11 ++++-------
 1 file changed, 4 insertions(+), 7 deletions(-)

diff --git a/src/wx/panel.cpp b/src/wx/panel.cpp
index e4b86301..faaf6e4d 100644
--- a/src/wx/panel.cpp
+++ b/src/wx/panel.cpp
@@ -1817,19 +1817,16 @@ void DrawingPanelBase::DrawArea(uint8_t** data)
     }
 
     // next, draw the frame (queue a PaintEv) Refresh must be used under
-    // Wayland or nothing is drawn, however it causes high CPU usage with GTK2,
-    // so use the old method in that case
-#if !defined(__WXGTK__) || defined(__WXGTK3__)
-    GetWindow()->Refresh();
-#else
-    {
+    // Wayland or nothing is drawn.
+    if (wxGetApp().UsingWayland())
+        GetWindow()->Refresh();
+    else {
         DrawingPanelBase* panel = wxGetApp().frame->GetPanel()->panel;
         if (panel) {
             wxClientDC dc(panel->GetWindow());
             panel->DrawArea(dc);
         }
     }
-#endif
 
     // finally, draw on-screen text using wx method, if possible
     // this method flickers too much right now
-- 
2.14.4