<AWT Dev> [8] Please review fix for 7175183: [macosx] Objective-C exception thrown when switching monitor configuration
Sergey Bylokhov
Sergey.Bylokhov at oracle.com
Tue Sep 4 05:49:27 PDT 2012
04.09.2012 16:37, Alexander Zuev пишет:
> Sergey,
>
> reviewing that on 2d alias can take a pretty long time to complete. As
> for the questions see answers inside:
but anyway this is 2d code.
>
> On 9/4/12 15:08, Sergey Bylokhov wrote:
>> Hi, Alexander.
>> I think that it should be reviewed on 2d alias.
>>
>> But a few comments:
>> - It is unclear how getBackupSurface can set sdAccel to null, but if
>> it set, it should invalidate old surface.
> getBackupSurface() by creating new surface data may trigger
> revalidate() call which (in method VolatileSurfaceManager.validate())
> contains the code that, if acceleration mode has been disabled,
> nullifies the sdAccel variable:
> } else if (sdAccel != null) {
> // if the "acceleration enabled" state changed to disabled,
> // switch to software surface
> sdCurrent = getBackupSurface();
> sdAccel = null;
> returnCode = VolatileImage.IMAGE_RESTORED;
> }
So old surface is not invalidated? Strange logic we call
getBackupSurface() twice in this case?
> Note that this does not happened often - only when the application is
> being reanimated from the
> hibernate mode and during the hibernate the external display was
> disconnected potentially resulting in
> switching to the video adapter which does not support accelerated
> drawing.
>
>> - Same question about CWrapper: if pointer contains nil do we release
>> this object before?
> If it is nil then it was not initialized in the first place, this
> means that displayID does not represent anymore a valid
> device
in this case we should not call screenByDisplayId and release?
> so when we are attempting to get
> CWrapper.NSScreen.screenByDisplayId(displayId) we are getting nil and
> later trying to release it via CWrapper.NSObject.release(screen)
>
>
> With best regards,
> Alex
>
>>
>>
>> 04.09.2012 13:48, Alexander Zuev wrote:
>>> Hello,
>>>
>>> please review my fix for CR 7175183: [macosx] Objective-C exception
>>> thrown when switching monitor configuration
>>>
>>> The NPE happens because of the getBackupSurface method call results
>>> in the resetting of the current surface to null. The idea of the fix
>>> is to check for it in both native and java methods before using it.
>>>
>>> Bug description is:
>>> http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=7175183
>>> Webrev can be found here:
>>> http://cr.openjdk.java.net/~kizune/7175183/webrev.00
>>>
>>> With best regards,
>>> Alex
>>
>>
>
--
Best regards, Sergey.
More information about the awt-dev
mailing list