kinda fix edge case unmapping/destroying window immediately after switching from empty desktop

This commit is contained in:
Iris Lightshard 2022-03-06 14:55:33 -07:00
parent e94234055d
commit 53bd15ab89
Signed by: Iris Lightshard
GPG key ID: 3B7FBC22144E6398
4 changed files with 132 additions and 7 deletions

View file

@ -429,10 +429,14 @@ Window getrevert(Client* c) {
} else {
m = getmonitorbyclient(c);
for (cc = c->revert; cc && cc->revert; cc = cc->revert) {
if (getmonitorbyclient(cc) == m) {
#ifdef AUTOSTICK
if (getmonitorbyclient(cc) == m && normal(cc) && !isautostick(cc)) {
#else
if (getmonitorbyclient(cc) == m && normal(cc)) {
#endif
return cc->window;
}
}
}
return 0;
}
}

View file

@ -256,7 +256,6 @@ void mapreq(XMapRequestEvent* e) {
void unmap(XUnmapEvent* e) {
Client *c, *revertc;
Window revert;
int m;
curtime = CurrentTime;
@ -354,7 +353,6 @@ void destroy(Window w) {
int i;
Client *c, *revertc;
Window revert;
int monitor;
curtime = CurrentTime;
c = getclient(w, 0);
@ -362,7 +360,6 @@ void destroy(Window w) {
return;
revert = getrevert(c);
monitor = getmonitorbyclient(c);
if (numvirtuals > 1)
for (i = 0; i < numvirtuals; i++)

6
menu.c
View file

@ -311,16 +311,18 @@ void move(Client* c, int but) {
void delete (Client* c, int shift) {
Client* revertc;
int m;
if (c == 0)
return;
if (c == current) {
m = getmonitorbyclient(c);
if (revertc = getclient(getrevert(c), 0)) {
top(revertc);
active(revertc);
} else {
nofocus();
shuffleonmonitor(m);
}
}
@ -349,7 +351,7 @@ void hide(Client* c) {
top(revertc);
active(revertc);
} else {
nofocus();
shuffleonmonitor(monitor);
}
}
if (reversehide) {

122
ryudo.log Normal file
View file

@ -0,0 +1,122 @@
modprobe cpufreq_stats failedLoaded 0 prior measurements
RAPL device for cpu 0
RAPL Using PowerCap Sysfs : Domain Mask d
RAPL device for cpu 0
RAPL Using PowerCap Sysfs : Domain Mask d
Devfreq not enabled
glob returned GLOB_ABORTED
darkhttpd: bind(port 9001): Address already in use
9pserve: announce unix!/tmp/ns.nilix.:0/plumb: Address already in use
plumber: post9pservice plumb: 9pserve failed
Gtk-Message: 22:07:46.335: Failed to load module "colorreload-gtk-module"
Gtk-Message: 22:07:46.335: Failed to load module "window-decorations-gtk-module"
Warning: Missing charsets in String to FontSet conversion
draw_border 0x55f1803bf7a0 pixel 0 active 0 hold 0
draw_border 0x55f1803c0970 pixel 0 active 0 hold 0
Gtk-Message: 22:07:46.445: Failed to load module "colorreload-gtk-module"
Gtk-Message: 22:07:46.445: Failed to load module "window-decorations-gtk-module"
Could not find Xinerama screen number 1
Leaving PowerTOP
draw_border 0x55f1803c0c50 pixel 1536876 active 1 hold 0
draw_border 0x55f1803c0c50 pixel 0 active 0 hold 0
ryudo: active(c==0)
ryudo: (nil) not on client list in top()
ryudo: active(c==0)
ryudo: (nil) not on client list in top()
ryudo: active(c==0)
ryudo: (nil) not on client list in top()
ryudo: WM_STATE: format 32 data 0 431 w 0x180002f
ryudo: WM_STATE: format 32 data 0 432 w 0x180002f
draw_border 0x55f1803e3000 pixel 1536876 active 1 hold 0
ryudo: WM_STATE: format 32 data 0 431 w 0x18000aa
ryudo: WM_STATE: format 32 data 0 432 w 0x18000aa
ryudo: WM_STATE: format 32 data 0 431 w 0x18000af
ryudo: WM_STATE: format 32 data 0 432 w 0x18000af
ryudo: WM_STATE: format 32 data 1 431 w 0x18000b4
ryudo: WM_STATE: format 32 data 0 432 w 0x18000b4
ryudo: WM_STATE: format 32 data 0 431 w 0x18000bd
ryudo: WM_STATE: format 32 data 0 432 w 0x18000bd
ryudo: WM_STATE: format 32 data 0 431 w 0x18000c2
ryudo: WM_STATE: format 32 data 0 432 w 0x18000c2
ryudo: WM_STATE: format 32 data 0 431 w 0x18000e3
ryudo: WM_STATE: format 32 data 0 432 w 0x18000e3
ryudo: WM_STATE: format 32 data 1 431 w 0x18000f4
ryudo: WM_STATE: format 32 data 0 432 w 0x18000f4
ryudo: WM_STATE: format 32 data 0 431 w 0x18000fd
ryudo: WM_STATE: format 32 data 0 432 w 0x18000fd
ryudo: WM_STATE: format 32 data 0 431 w 0x1800102
ryudo: WM_STATE: format 32 data 0 432 w 0x1800102
ryudo: WM_STATE: format 32 data 0 431 w 0x1800107
ryudo: WM_STATE: format 32 data 0 432 w 0x1800107
ryudo: WM_STATE: format 32 data 1 431 w 0x180010c
ryudo: WM_STATE: format 32 data 0 432 w 0x180010c
ryudo: WM_STATE: format 32 data 0 431 w 0x180011d
ryudo: WM_STATE: format 32 data 0 432 w 0x180011d
ryudo: WM_STATE: format 32 data 0 431 w 0x1800122
ryudo: WM_STATE: format 32 data 0 432 w 0x1800122
ryudo: WM_STATE: format 32 data 0 431 w 0x1800127
ryudo: WM_STATE: format 32 data 0 432 w 0x1800127
ryudo: WM_STATE: format 32 data 0 431 w 0x180012c
ryudo: WM_STATE: format 32 data 0 432 w 0x180012c
ryudo: WM_STATE: format 32 data 0 431 w 0x1800131
ryudo: WM_STATE: format 32 data 0 432 w 0x1800131
ryudo: WM_STATE: format 32 data 0 431 w 0x1800136
ryudo: WM_STATE: format 32 data 0 432 w 0x1800136
ryudo: WM_STATE: format 32 data 0 431 w 0x1800153
ryudo: WM_STATE: format 32 data 0 432 w 0x1800153
draw_border 0x55f1803e3000 pixel 0 active 0 hold 0
draw_border 0x55f1803e3680 pixel 1536876 active 1 hold 0
draw_border 0x55f1803e3680 pixel 0 active 0 hold 0
draw_border 0x55f1803e3000 pixel 1536876 active 1 hold 0
draw_border 0x55f1803e3000 pixel 0 active 0 hold 0
draw_border 0x55f1803e3680 pixel 1536876 active 1 hold 0
right
right
right
right
right
right
right
right
right
right
right
right
right
right
right
right
right
right
but: e x=62 y=340 c x=0 y=0 dx=1600 dy=900 BORDR 4
draw_border 0x55f1803e3680 pixel 0 active 0 hold 0
draw_border 0x55f1803e3000 pixel 1536876 active 1 hold 0
ryudo: WM_STATE: format 32 data 1 431 w 0x180018c
ryudo: WM_STATE: format 32 data 0 432 w 0x180018c
ryudo: WM_STATE: format 32 data 1 431 w 0x18001bd
ryudo: WM_STATE: format 32 data 0 432 w 0x18001bd
ryudo: WM_STATE: format 32 data 1 431 w 0x18001d6
ryudo: WM_STATE: format 32 data 0 432 w 0x18001d6
ryudo: WM_STATE: format 32 data 1 431 w 0x18001db
ryudo: WM_STATE: format 32 data 0 432 w 0x18001db
ryudo: WM_STATE: format 32 data 1 431 w 0x18001e0
ryudo: WM_STATE: format 32 data 0 432 w 0x18001e0
ryudo: WM_STATE: format 32 data 1 431 w 0x18001e5
ryudo: WM_STATE: format 32 data 0 432 w 0x18001e5
draw_border 0x55f1803e3000 pixel 0 active 0 hold 0
draw_border 0x55f1803e3680 pixel 1536876 active 1 hold 0
draw_border 0x55f1803e3680 pixel 0 active 0 hold 0
draw_border 0x55f1803e3000 pixel 1536876 active 1 hold 0
ryudo: WM_STATE: format 32 data 0 431 w 0x1800202
ryudo: WM_STATE: format 32 data 0 432 w 0x1800202
draw_border 0x55f1803e3000 pixel 0 active 0 hold 0
draw_border 0x55f1803e3680 pixel 1536876 active 1 hold 0
draw_border 0x55f1803e3680 pixel 0 active 0 hold 0
draw_border 0x55f1803e3000 pixel 1536876 active 1 hold 0
draw_border 0x55f1803e3000 pixel 0 active 0 hold 0
draw_border 0x55f1803e3680 pixel 1536876 active 1 hold 0
draw_border 0x55f1803e3680 pixel 0 active 0 hold 0
draw_border 0x55f1803e3000 pixel 1536876 active 1 hold 0
draw_border 0x55f1803e3000 pixel 0 active 0 hold 0
draw_border 0x55f1803e3680 pixel 1536876 active 1 hold 0
X connection to :0 broken (explicit kill or server shutdown).