commit - ce8d6f246568cdb397a0a0095ad843a9769149a8
commit + e055ceb20bd94caff3b07e64a051ab3a899c0463
blob - 01356726eacc77296cfff9497d21c699c8091e64
blob + 2f295a03b68aab705e4f9135bd039af136d2b9ce
--- src/cmd/devdraw/osx-screen-carbon.m
+++ src/cmd/devdraw/osx-screen-carbon.m
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:
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