diff options
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; } |