On Fri, 13 May 2022 18:01:47 GMT, Harshitha Onkar <d...@openjdk.java.net> wrote:

>> In Windows, when desktop scaling is changed the tray icons was 
>> distorted/blurred a bit each time scaling changes.
>> 
>> With the proposed fix, the tray icon scales according to on-the-fly DPI 
>> scale settings. A test case has been added which adds a MRI icon to system 
>> tray, to observe the icon scaling when DPI is changed. Since the scale 
>> cannot be programmatically changed (for dynamic on-the-fly scale changes), I 
>> have used a manual test case to test this scenario.
>> 
>> When DPI changes usually two messages are sent by windows -
>> 
>> - 
>> [WM_DPICHANGED](https://docs.microsoft.com/en-us/windows/win32/hidpi/wm-dpichanged)
>> - 
>> [WMPOSCHANGING](https://docs.microsoft.com/en-us/windows/win32/winmsg/wm-windowposchanging)
>> 
>> I'm triggering an update on tray icons on receiving WMPOSCHANGING msg 
>> through the Tray icon's Window Procedure. Triggering an update on 
>> WM_DPICHANGED was still causing the icons to be distorted, hence 
>> WMPOSCHANGING is being used as the message to trigger the update.
>
> Harshitha Onkar has updated the pull request with a new target base due to a 
> merge or a rebase. The incremental webrev excludes the unrelated changes 
> brought in by the merge/rebase. The pull request contains 11 additional 
> commits since the last revision:
> 
>  - Merge branch 'master' into WinTrayIcon
>  - reverted SystemTray changes
>  - new changes - trayicon update triggered in WmTaskbarCreated
>  - trayicon update triggered on taskbar reload
>  - test case exit issue fix
>  - formatting changes
>  - resized instruction window and formatted line lengths
>  - removed whitespaces error due to CRLF
>  - removed whitespace error
>  - added manual to test case
>  - ... and 1 more: 
> https://git.openjdk.java.net/jdk/compare/f228d55a...60391f28

src/java.desktop/windows/native/libawt/windows/awt_TrayIcon.cpp line 239:

> 237:         env->ExceptionDescribe();
> 238:         env->ExceptionClear();
> 239:     }

Reduce this to ExceptionClear()
(1) ExceptionDescribe() per the docs 
https://docs.oracle.com/en/java/javase/17/docs/specs/jni/functions.html#exceptions
prints a message .. which we don't want .. it is meant for debugging not 
production and FWIW it clears the pending exception so any time you see 
Describe() followed by Clear() the code seems odd (well pointless)
2) safe_ExceptionOccurred is only useful if you are coming from a JNI method 
that uses C++ exception handling. Here the call originates from native doesn't 
it ? And we don't return to Java since it is a native event loop.

Ah I see we also have it called from _initIDs. Well I think for simplicity my 
advice stands.

So JUST env->ExceptionClear() will do

-------------

PR: https://git.openjdk.java.net/jdk/pull/8441

Reply via email to