plan9port

fork of plan9port with libvec, libstr and libsdb
Log | Files | Refs | README | LICENSE

commit e055ceb20bd94caff3b07e64a051ab3a899c0463
parent ce8d6f246568cdb397a0a0095ad843a9769149a8
Author: David Swasey <david.swasey@gmail.com>
Date:   Mon, 20 Jun 2011 14:11:21 -0400

devdraw: Shrinking a window on osx 10.6.7 no longer disables drawing.

R=rsc
CC=plan9port.codebot
http://codereview.appspot.com/4632051

Diffstat:
Msrc/cmd/devdraw/osx-screen-carbon.m | 23++++++++++++++---------
1 file changed, 14 insertions(+), 9 deletions(-)

diff --git a/src/cmd/devdraw/osx-screen-carbon.m b/src/cmd/devdraw/osx-screen-carbon.m @@ -524,8 +524,14 @@ eventhandler(EventHandlerCallRef next, EventRef event, void *arg) case kEventWindowClosed: exit(0); - case kEventWindowBoundsChanged: - eresized(0); + case kEventWindowBoundsChanged:; + // We see kEventWindowDrawContent + // if we grow a window but not if we shrink it. + UInt32 flags; + GetEventParameter(event, kEventParamAttributes, + typeUInt32, 0, sizeof flags, 0, &flags); + int new = (flags & kWindowBoundsChangeSizeChanged) != 0; + eresized(new); break; case kEventWindowDrawContent: @@ -839,13 +845,12 @@ eresized(int new) osx.screenimage = m; osx.screenr = r; - // I'm not 100% sure why this is necessary - // but otherwise some resizes (esp. vertical ones) - // stop updating the screen. - qlock(&osx.flushlock); - QDEndCGContext(GetWindowPort(osx.window), &osx.windowctx); - osx.windowctx = nil; - qunlock(&osx.flushlock); + if(new){ + qlock(&osx.flushlock); + QDEndCGContext(GetWindowPort(osx.window), &osx.windowctx); + osx.windowctx = nil; + qunlock(&osx.flushlock); + } } void