diff options
author | Russ Cox <rsc@golang.org> | 2020-01-12 14:53:46 -0500 |
---|---|---|
committer | Russ Cox <rsc@swtch.com> | 2020-01-13 16:46:14 -0500 |
commit | 50923426bf684402160dd7748f14560afd447b73 (patch) | |
tree | ddabd607a5936424e70920e4aed7790bec61cca1 /src/cmd/devdraw/devdraw.c | |
parent | 892b3c4687eacf6b090bb9a5196ce882e113c423 (diff) | |
download | plan9port-50923426bf684402160dd7748f14560afd447b73.tar.gz plan9port-50923426bf684402160dd7748f14560afd447b73.tar.bz2 plan9port-50923426bf684402160dd7748f14560afd447b73.zip |
devdraw: x11 working again
Need to think a bit more about locking,
but overall it's a working devdraw.
Multiclient mode may not be working
but nothing is using it yet.
Diffstat (limited to 'src/cmd/devdraw/devdraw.c')
-rw-r--r-- | src/cmd/devdraw/devdraw.c | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/src/cmd/devdraw/devdraw.c b/src/cmd/devdraw/devdraw.c index e3040779..086574ef 100644 --- a/src/cmd/devdraw/devdraw.c +++ b/src/cmd/devdraw/devdraw.c @@ -144,9 +144,11 @@ addflush(Client *c, Rectangle r) // Unlock drawlk because rpc_flush may want to run on gfx thread, // and gfx thread might be blocked on drawlk trying to install a new screen // during a resize. + rpc_gfxdrawunlock(); qunlock(&c->drawlk); rpc_flush(c, fr); qlock(&c->drawlk); + rpc_gfxdrawlock(); } } @@ -187,9 +189,11 @@ drawflush(Client *c) // Unlock drawlk because rpc_flush may want to run on gfx thread, // and gfx thread might be blocked on drawlk trying to install a new screen // during a resize. + rpc_gfxdrawunlock(); qunlock(&c->drawlk); rpc_flush(c, r); qlock(&c->drawlk); + rpc_gfxdrawlock(); } } @@ -656,6 +660,7 @@ draw_datawrite(Client *client, void *v, int n) Refx *refx; qlock(&client->drawlk); + rpc_gfxdrawlock(); a = v; m = 0; oldn = n; @@ -1428,6 +1433,7 @@ draw_datawrite(Client *client, void *v, int n) continue; } } + rpc_gfxdrawunlock(); qunlock(&client->drawlk); return oldn - n; @@ -1498,6 +1504,7 @@ Ebadarg: error: werrstr("%s", err); + rpc_gfxdrawunlock(); qunlock(&client->drawlk); return -1; } |