mirror of
https://github.com/gnif/LookingGlass.git
synced 2024-12-23 14:21:57 +00:00
[client] fix issue with windowmanager forcing the window size (i3wm)
This commit is contained in:
parent
2196516e2b
commit
49bf115c84
3 changed files with 34 additions and 13 deletions
2
VERSION
2
VERSION
|
@ -1 +1 @@
|
||||||
B1-48-g899dbff7e9+1
|
B1-49-g2196516e2b+1
|
|
@ -636,10 +636,14 @@ int eventFilter(void * userdata, SDL_Event * event)
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case SDL_WINDOWEVENT_SIZE_CHANGED:
|
case SDL_WINDOWEVENT_SIZE_CHANGED:
|
||||||
state.windowW = event->window.data1;
|
case SDL_WINDOWEVENT_RESIZED:
|
||||||
state.windowH = event->window.data2;
|
if (state.wminfo.subsystem != SDL_SYSWM_X11)
|
||||||
updatePositionInfo();
|
{
|
||||||
realignGuest = true;
|
state.windowW = event->window.data1;
|
||||||
|
state.windowH = event->window.data2;
|
||||||
|
updatePositionInfo();
|
||||||
|
realignGuest = true;
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
// allow a window close event to close the application even if ignoreQuit is set
|
// allow a window close event to close the application even if ignoreQuit is set
|
||||||
|
@ -652,6 +656,23 @@ int eventFilter(void * userdata, SDL_Event * event)
|
||||||
|
|
||||||
case SDL_SYSWMEVENT:
|
case SDL_SYSWMEVENT:
|
||||||
{
|
{
|
||||||
|
// When the window manager forces the window size after calling SDL_SetWindowSize, SDL
|
||||||
|
// ignores this update and caches the incorrect window size.
|
||||||
|
if (state.wminfo.subsystem == SDL_SYSWM_X11)
|
||||||
|
{
|
||||||
|
XEvent xe = event->syswm.msg->msg.x11.event;
|
||||||
|
if (xe.type == ConfigureNotify)
|
||||||
|
{
|
||||||
|
if (state.windowW != xe.xconfigure.width || state.windowH != xe.xconfigure.height)
|
||||||
|
{
|
||||||
|
state.windowW = xe.xconfigure.width;
|
||||||
|
state.windowH = xe.xconfigure.height;
|
||||||
|
updatePositionInfo();
|
||||||
|
realignGuest = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (params.useSpiceClipboard && state.lgc && state.lgc->wmevent)
|
if (params.useSpiceClipboard && state.lgc && state.lgc->wmevent)
|
||||||
state.lgc->wmevent(event->syswm.msg);
|
state.lgc->wmevent(event->syswm.msg);
|
||||||
return 0;
|
return 0;
|
||||||
|
@ -1194,21 +1215,20 @@ static int lg_run()
|
||||||
register_key_binds();
|
register_key_binds();
|
||||||
|
|
||||||
// set the compositor hint to bypass for low latency
|
// set the compositor hint to bypass for low latency
|
||||||
SDL_SysWMinfo wminfo;
|
SDL_VERSION(&state.wminfo.version);
|
||||||
SDL_VERSION(&wminfo.version);
|
if (SDL_GetWindowWMInfo(state.window, &state.wminfo))
|
||||||
if (SDL_GetWindowWMInfo(state.window, &wminfo))
|
|
||||||
{
|
{
|
||||||
if (wminfo.subsystem == SDL_SYSWM_X11)
|
if (state.wminfo.subsystem == SDL_SYSWM_X11)
|
||||||
{
|
{
|
||||||
Atom NETWM_BYPASS_COMPOSITOR = XInternAtom(
|
Atom NETWM_BYPASS_COMPOSITOR = XInternAtom(
|
||||||
wminfo.info.x11.display,
|
state.wminfo.info.x11.display,
|
||||||
"NETWM_BYPASS_COMPOSITOR",
|
"NETWM_BYPASS_COMPOSITOR",
|
||||||
False);
|
False);
|
||||||
|
|
||||||
unsigned long value = 1;
|
unsigned long value = 1;
|
||||||
XChangeProperty(
|
XChangeProperty(
|
||||||
wminfo.info.x11.display,
|
state.wminfo.info.x11.display,
|
||||||
wminfo.info.x11.window,
|
state.wminfo.info.x11.window,
|
||||||
NETWM_BYPASS_COMPOSITOR,
|
NETWM_BYPASS_COMPOSITOR,
|
||||||
XA_CARDINAL,
|
XA_CARDINAL,
|
||||||
32,
|
32,
|
||||||
|
@ -1227,7 +1247,7 @@ static int lg_run()
|
||||||
if (state.lgc)
|
if (state.lgc)
|
||||||
{
|
{
|
||||||
DEBUG_INFO("Using Clipboard: %s", state.lgc->getName());
|
DEBUG_INFO("Using Clipboard: %s", state.lgc->getName());
|
||||||
if (!state.lgc->init(&wminfo, clipboardRelease, clipboardNotify, clipboardData))
|
if (!state.lgc->init(&state.wminfo, clipboardRelease, clipboardNotify, clipboardData))
|
||||||
{
|
{
|
||||||
DEBUG_WARN("Failed to initialize the clipboard interface, continuing anyway");
|
DEBUG_WARN("Failed to initialize the clipboard interface, continuing anyway");
|
||||||
state.lgc = NULL;
|
state.lgc = NULL;
|
||||||
|
|
|
@ -54,6 +54,7 @@ struct AppState
|
||||||
SpiceDataType cbType;
|
SpiceDataType cbType;
|
||||||
struct ll * cbRequestList;
|
struct ll * cbRequestList;
|
||||||
|
|
||||||
|
SDL_SysWMinfo wminfo;
|
||||||
SDL_Window * window;
|
SDL_Window * window;
|
||||||
|
|
||||||
struct IVSHMEM shm;
|
struct IVSHMEM shm;
|
||||||
|
|
Loading…
Reference in a new issue