45 lines
1.5 KiB
Diff
45 lines
1.5 KiB
Diff
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
|
|
|