<AWT Dev> Review request for 8143316 Crash Trend in 1.9.0-ea-b93 (sun.awt.DefaultMouseInfoPeer.fillPointWithCoords)
Sergey Bylokhov
Sergey.Bylokhov at oracle.com
Wed Dec 30 15:05:44 UTC 2015
Looks fine.
On 28/12/15 17:47, Alexander Scherbatiy wrote:
>
>
> Could you review the updated fix:
> http://cr.openjdk.java.net/~alexsch/8143316/webrev.01
>
> - DefaultMouseInfoPeer is removed from the SunToolkit and
> WMouseInfoPeer is added to the WToolkit
> - Screen devices initialization is added to the WMouseInfoPeer
> - MONITOR_DEFAULTTONEAREST argument is changed to the
> MONITOR_DEFAULTTOPRIMARY for the MonitorFromPoint method
> to find a point which is not contained within any display monitor.
>
> On 12/23/2015 5:59 PM, Sergey Bylokhov wrote:
>> Hi.
>> This issue is related to windows only, but we change the shared code
>> in a way which can mislead someone, and the crash can be returned
>> after some refactoring, or when someone will call
>> fillPointWithCoords() before device initialization in some other place.
>> So it seems this code should be rewritten, am I missed something but
>> it looks like this method incorrectly work in case of scaled displays.
>> I guess fillPointWithCoords should return unscaled coords otherwise
>> how we will figure out what scale should be used there(screen)?
>> Because at the end of the method getPointerInfo we iterate over
>> devices to find which one is correct.
>
> Windows and Mac OS X use different strategies to return the mouse
> coordinates.
> CGEventGetLocation function returns scaled mouse coordinates on Mac
> OS X.
> GetCursorPos function returns unscaled mouse coordinates on Windows.
> It looks like it is better to always return scaled coordinates from
> the native level.
>
> Thanks,
> Alexandr.
>
>>
>> On 10/12/15 15:06, Alexander Scherbatiy wrote:
>>>
>>> Hello,
>>>
>>> Could you review the fix:
>>> bug: https://bugs.openjdk.java.net/browse/JDK-8143316
>>> webrev: http://cr.openjdk.java.net/~alexsch/8143316/webrev.00
>>>
>>> The the native MouseInfo.fillPointWithCoords() method can access the
>>> devices before they are initialized.
>>> The fix moves the devices initialization before the
>>> getMouseInfoPeer().fillPointWithCoords(point) call in the
>>> getPointerInfo() method.
>>>
>>> The MonitorFromPoint method is added to the native
>>> fillPointWithCoords() method to find the device where the mouse cursor
>>> is placed.
>>>
>>> Thanks,
>>> Alexandr.
>>>
>>
>>
>
--
Best regards, Sergey.
More information about the awt-dev
mailing list