summaryrefslogtreecommitdiff
path: root/Source
diff options
context:
space:
mode:
authorStenzek <stenzek@users.noreply.github.com>2016-11-28 22:04:21 +1000
committerGitHub <noreply@github.com>2016-11-28 22:04:21 +1000
commit49e807b71f5f2af09359295ecd2f1645c86d7c2c (patch)
treebe5317b0258ecb8429f094586a7219a31807670c /Source
parentda87580dc1c8eb63dac783f0e50e9bd3cfe4b3a1 (diff)
parent1aecf90765f2bb7c8acaf848cc71f05a26ef4de6 (diff)
Merge pull request #4459 from stenzek/nogui-resize-notify
DolphinNoGUI: Receive resize events and notify backend when this occurs
Diffstat (limited to 'Source')
-rw-r--r--Source/Core/DolphinWX/MainNoGUI.cpp21
1 files changed, 20 insertions, 1 deletions
diff --git a/Source/Core/DolphinWX/MainNoGUI.cpp b/Source/Core/DolphinWX/MainNoGUI.cpp
index b0c6e9a321..fee6e316c1 100644
--- a/Source/Core/DolphinWX/MainNoGUI.cpp
+++ b/Source/Core/DolphinWX/MainNoGUI.cpp
@@ -31,6 +31,7 @@
#include "UICommon/UICommon.h"
+#include "VideoCommon/RenderBase.h"
#include "VideoCommon/VideoBackendBase.h"
static bool rendererHasFocus = true;
@@ -188,7 +189,7 @@ class PlatformX11 : public Platform
SConfig::GetInstance().iRenderWindowYPos,
SConfig::GetInstance().iRenderWindowWidth,
SConfig::GetInstance().iRenderWindowHeight, 0, 0, BlackPixel(dpy, 0));
- XSelectInput(dpy, win, KeyPressMask | FocusChangeMask);
+ XSelectInput(dpy, win, StructureNotifyMask | KeyPressMask | FocusChangeMask);
Atom wmProtocols[1];
wmProtocols[0] = XInternAtom(dpy, "WM_DELETE_WINDOW", True);
XSetWMProtocols(dpy, win, wmProtocols, 1);
@@ -220,6 +221,8 @@ class PlatformX11 : public Platform
void MainLoop() override
{
bool fullscreen = SConfig::GetInstance().bFullscreen;
+ int last_window_width = SConfig::GetInstance().iRenderWindowWidth;
+ int last_window_height = SConfig::GetInstance().iRenderWindowHeight;
if (fullscreen)
{
@@ -313,6 +316,22 @@ class PlatformX11 : public Platform
if ((unsigned long)event.xclient.data.l[0] == XInternAtom(dpy, "WM_DELETE_WINDOW", False))
s_shutdown_requested.Set();
break;
+ case ConfigureNotify:
+ {
+ if (last_window_width != event.xconfigure.width ||
+ last_window_height != event.xconfigure.height)
+ {
+ last_window_width = event.xconfigure.width;
+ last_window_height = event.xconfigure.height;
+
+ // We call Renderer::ChangeSurface here to indicate the size has changed,
+ // but pass the same window handle. This is needed for the Vulkan backend,
+ // otherwise it cannot tell that the window has been resized on some drivers.
+ if (g_renderer)
+ g_renderer->ChangeSurface(s_window_handle);
+ }
+ }
+ break;
}
}
if (!fullscreen)