ref: 2d74cd0482e2c5e7244b291ee20f190647a08a28
parent: 1f01f248d5c8437c45064ca3110b292e9022dc1f
author: qwx <qwx@sciops.net>
date: Wed Jan 7 05:35:34 EST 2026
page: sync with 9front
--- a/sys/src/cmd/page.c
+++ b/sys/src/cmd/page.c
@@ -947,11 +947,9 @@
if(p->image == nil)
p->open = nil;
else {- lockdisplay(display);
if(invert)
invertimage(p->image);
imemsize += imagesize(p->image);
- unlockdisplay(display);
}
}
}
@@ -965,10 +963,8 @@
if(p->open == nil || p->image == nil)
return;
- lockdisplay(display);
imemsize -= imagesize(p->image);
freeimage(p->image);
- unlockdisplay(display);
p->image = nil;
}
@@ -1008,9 +1004,7 @@
newwin = 0;
resizewin(size);
}
- lockdisplay(display);
drawpage(p);
- unlockdisplay(display);
}
qunlock(p);
next:
@@ -1034,9 +1028,7 @@
{Page *next, *up;
- drawlock(0);
unloadpage(p);
- drawlock(1);
if(p->fd >= 0)
close(p->fd);
p->fd = -1;
@@ -1430,29 +1422,13 @@
nproc++;
}
-/* recursive display lock, called from main proc only */
void
-drawlock(int dolock){- static int ref = 0;
- if(dolock){- if(ref++ == 0)
- lockdisplay(display);
- } else {- if(--ref == 0)
- unlockdisplay(display);
- }
-}
-
-
-void
showpage(Page *p)
{if(p == nil)
return;
- drawlock(0);
unloadpages(imemlimit);
showpage1(p);
- drawlock(1);
}
void
@@ -1463,7 +1439,6 @@
if(p == nil)
return;
- drawlock(0);
qlock(p);
if((fd = openpage(p)) < 0)
goto Out;
@@ -1479,7 +1454,6 @@
close(fd);
Out:
qunlock(p);
- drawlock(1);
}
void
@@ -1495,7 +1469,6 @@
ps = Pt(0, 0);
if(p->image != nil)
ps = addpt(subpt(p->image->r.max, p->image->r.min), Pt(24, 24));
- drawlock(0);
if((fd = p->fd) < 0){if(p->open != popenfile)
return;
@@ -1522,7 +1495,6 @@
exits(0);
}
close(fd);
- drawlock(1);
}
void
@@ -1530,7 +1502,6 @@
{Page *p;
- drawlock(1);
if(new && getwindow(display, Refnone) == -1)
sysfatal("getwindow: %r");draw(screen, screen->r, cols[Cground], nil, ZP);
@@ -1540,7 +1511,6 @@
qunlock(p);
}
}
- drawlock(0);
}
int cohort = -1;
@@ -1582,10 +1552,8 @@
rotate = 0;
Unload:
viewgen++;
- drawlock(0);
unloadpages(0);
showpage1(current);
- drawlock(1);
break;
case Cupsidedown:
rotate += 90;
@@ -1672,10 +1640,8 @@
break;
}
if((current = p) == nil){- drawlock(0);
draw(screen, screen->r, cols[Cground], nil, ZP);
drawframe(screen->r);
- drawlock(1);
break;
}
showpage(current);
@@ -1813,9 +1779,7 @@
readtheme(th, nelem(th), nil);
for(i=0; i<nelem(cols); i++)
cols[i] = allocimage(display, Rect(0,0,1,1), screen->chan, 1, th[i].c);
- display->locking = 1;
draw(screen, screen->r, cols[Cground], nil, ZP);
- unlockdisplay(display);
einit(Ekeyboard|Emouse);
eplumb(Eplumb, "image");
@@ -1834,11 +1798,8 @@
for(i=0; i<NPROC/4; i++) /* rice */
showpage1(current);
- drawlock(1);
for(;;){- drawlock(0);
i=event(&e);
- drawlock(1);
switch(i){case Emouse:
@@ -1942,9 +1903,7 @@
j = trywalk(s, plumblookup(pm->attr, "addr"));
if(j == nil){current = root;
- drawlock(0);
j = addpage(root, s, popenfile, s, fd);
- drawlock(1);
}
forward = 0;
showpage(j);
--
⑨