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:
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