зеркало из https://github.com/mozilla/pjs.git
10.4-only top crash at [@ nsNativeThemeCocoa::DrawCellWithScaling]. b=458961 r=mstange,stuart.morgan sr=vlad a=vlad
This commit is contained in:
Родитель
800ca5417b
Коммит
c0a29b5c2a
|
@ -256,8 +256,7 @@ static void DrawCellWithScaling(NSCell *cell,
|
||||||
if (drawRect.size.height < minimumSize.height)
|
if (drawRect.size.height < minimumSize.height)
|
||||||
drawRect.size.height = minimumSize.height;
|
drawRect.size.height = minimumSize.height;
|
||||||
|
|
||||||
CGAffineTransform savedCTM = CGContextGetCTM(cgContext);
|
[NSGraphicsContext saveGraphicsState];
|
||||||
NSGraphicsContext* savedContext = [NSGraphicsContext currentContext];
|
|
||||||
|
|
||||||
if (flip) {
|
if (flip) {
|
||||||
// This flips the image in place and is necessary to work around a bug in the way
|
// This flips the image in place and is necessary to work around a bug in the way
|
||||||
|
@ -274,12 +273,16 @@ static void DrawCellWithScaling(NSCell *cell,
|
||||||
// Inflate the rect Gecko gave us by the margin for the control.
|
// Inflate the rect Gecko gave us by the margin for the control.
|
||||||
InflateControlRect(&drawRect, controlSize, marginSet);
|
InflateControlRect(&drawRect, controlSize, marginSet);
|
||||||
|
|
||||||
|
NSGraphicsContext* savedContext = [NSGraphicsContext currentContext];
|
||||||
|
|
||||||
// Set up the graphics context we've been asked to draw to.
|
// Set up the graphics context we've been asked to draw to.
|
||||||
[NSGraphicsContext setCurrentContext:[NSGraphicsContext graphicsContextWithGraphicsPort:cgContext flipped:YES]];
|
[NSGraphicsContext setCurrentContext:[NSGraphicsContext graphicsContextWithGraphicsPort:cgContext flipped:YES]];
|
||||||
|
|
||||||
// [NSView focusView] may return nil here, but
|
// [NSView focusView] may return nil here, but
|
||||||
// [NSCell drawWithFrame:inView:] can deal with that.
|
// [NSCell drawWithFrame:inView:] can deal with that.
|
||||||
[cell drawWithFrame:drawRect inView:[NSView focusView]];
|
[cell drawWithFrame:drawRect inView:[NSView focusView]];
|
||||||
|
|
||||||
|
[NSGraphicsContext setCurrentContext:savedContext];
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
float w = ceil(drawRect.size.width);
|
float w = ceil(drawRect.size.width);
|
||||||
|
@ -303,6 +306,8 @@ static void DrawCellWithScaling(NSCell *cell,
|
||||||
|
|
||||||
CGContextTranslateCTM(ctx, MAX_FOCUS_RING_WIDTH, MAX_FOCUS_RING_WIDTH);
|
CGContextTranslateCTM(ctx, MAX_FOCUS_RING_WIDTH, MAX_FOCUS_RING_WIDTH);
|
||||||
|
|
||||||
|
NSGraphicsContext* savedContext = [NSGraphicsContext currentContext];
|
||||||
|
|
||||||
[NSGraphicsContext setCurrentContext:[NSGraphicsContext graphicsContextWithGraphicsPort:ctx flipped:YES]];
|
[NSGraphicsContext setCurrentContext:[NSGraphicsContext graphicsContextWithGraphicsPort:ctx flipped:YES]];
|
||||||
|
|
||||||
// [NSView focusView] may return nil here, but
|
// [NSView focusView] may return nil here, but
|
||||||
|
@ -330,9 +335,7 @@ static void DrawCellWithScaling(NSCell *cell,
|
||||||
CGContextRelease(ctx);
|
CGContextRelease(ctx);
|
||||||
}
|
}
|
||||||
|
|
||||||
CGContextSetCTM(cgContext, savedCTM);
|
[NSGraphicsContext restoreGraphicsState];
|
||||||
|
|
||||||
[NSGraphicsContext setCurrentContext:savedContext];
|
|
||||||
|
|
||||||
#if DRAW_IN_FRAME_DEBUG
|
#if DRAW_IN_FRAME_DEBUG
|
||||||
CGContextSetRGBFillColor(cgContext, 0.0, 0.0, 0.5, 0.25);
|
CGContextSetRGBFillColor(cgContext, 0.0, 0.0, 0.5, 0.25);
|
||||||
|
|
Загрузка…
Ссылка в новой задаче