[prev in list] [next in list] [prev in thread] [next in thread]
List: openjdk-openjfx-dev
Subject: Re: RFR: 8201538: Remove implementation support for applets from JavaFX
From: Ajit Ghaisas <aghaisas () openjdk ! java ! net>
Date: 2021-12-10 9:42:14
Message-ID: 5XyOsDruJnLcBnzMG1sr4q-HYKQQcmBV7lesjndez-c=.7ef90470-bf0c-4bc5-9b3d-e9bac2046402 () github ! com
[Download RAW message or body]
On Tue, 31 Aug 2021 16:28:53 GMT, Kevin Rushforth <kcr@openjdk.org> wrote:
> This PR removes the obsolete applet implementation from JavaFX. It is an \
> ongoing maintenance burden to carry around this legacy code. Also, \
> cleaning this up could help in the implementation of GTK4, Wayland, and \
> Metal, since we won't have to account for the way applet windows are \
> created and managed.
> ## Notes to reviewers:
>
> The first part of the removal was to eliminate the methods and classes on \
> the Java side that are associated with creating and managing an applet \
> window, and which are no longer called. After these were removed, I then \
> removed the corresponding methods and classes on the native side that are \
> no longer called.
> ### Shared Code
>
> The following were removed from the shared code.
>
> #### Removed Java classes
>
>
> com.sun.javafx.tk.AppletWindow
> com.sun.javafx.tk.quantum.GlassAppletWindow
>
>
> #### Removed methods
>
> The following methods were removed in the parent class and all \
> subclasses.
>
> com.sun.glass.ui.Application:
> public abstract Window createWindow(long parent)
>
> com.sun.glass.ui.Window:
> public boolean getAppletMode()
> public void setAppletMode(boolean appletMode)
> public void dispatchNpapiEvent(Map eventInfo)
> protected abstract long _createChildWindow(long parent)
> protected Window(long parent)
> protected abstract int _getEmbeddedX(long ptr)
> protected abstract int _getEmbeddedY(long ptr)
>
> com.sun.javafx.tk.Toolkit:
> public abstract AppletWindow createAppletWindow(...)
> public abstract void closeAppletWindow()
>
> com.sun.javafx.tk.quantum.WindowStage:
> static void setAppletWindow(GlassAppletWindow aw)
> static GlassAppletWindow getAppletWindow()
>
>
>
> ### Linux (Gtk) Java code
>
> The following classes or methods were removed:
>
>
> com.sun.glass.ui.gtk.GtkChildWindow (class removed)
>
> com.sun.glass.ui.gtk.GtkWindow:
> protected GtkWindow(long parent)
>
>
> ### Linux (Gtk) native glass:
>
> The following native classes were removed:
>
>
> WindowContextChild
> WindowContextPlug
>
>
> ### macOS Java code
>
> The following classes or methods were removed:
>
>
> com.sun.glass.events.mac.NpapiEvent (class removed)
>
> com.sun.glass.ui.mac.MacApplication:
> native protected String _getRemoteLayerServerName()
>
> com.sun.glass.ui.View:
> public int getNativeRemoteLayerId(String serverName)
>
> com.sun.glass.ui.mac.MacView:
> native protected int _getNativeRemoteLayerId(long ptr, String serverName)
> native protected void _hostRemoteLayerId(long ptr, int nativeLayerId)
>
> com.sun.glass.ui.mac.MacWindow:
> protected MacWindow(long parent)
>
>
> ### macOS native code
>
> The following native classes were removed:
>
>
> GlassEmbeddedWindow*
> GlassNSEvent
> GlassView3D+Remote
> RemoteLayerSupport
>
>
> I also removed the `jIsChild` parameter from the window creation code \
> which allowed for removing a lot of dead blocks of code. The main window \
> creation method was:
>
> - (id)_initWithContentRect:(NSRect)contentRect \
> styleMask:(NSUInteger)windowStyle screen:(NSScreen *)screen \
> jwindow:(jobject)jwindow jIsChild:(jboolean)jIsChild
>
> This created a `GlassEmbeddedWindow` iff `jIsChild == JNI_TRUE`. Since \
> `jIsChild` was only set to true by the (now removed) \
> `_createChildWindow(long)` method, we can remove the parameter, the \
> `GlassEmbeddedWindow*` classes, and all code blocks that are qualified by \
> `if (jIsChild)`.
> ### Windows Java code
>
> The following classes or methods were removed:
>
>
> com.sun.glass.ui.win.WinChildWindow (class removed)
>
> com.sun.glass.ui.win.WinWindow:
> protected WinWindow(long parent)
>
>
> ### Windows native code
>
> After removing all references to `IsChild()`, which was only ever true \
> for `_createChildWindow()`, we can also remove the following:
>
> GlassApplication::InstallMouseLLHook
> GlassApplication::UninstallMouseLLHook
>
>
> ### iOS Java code
>
>
> com.sun.glass.ui.ios.IosWindow:
> protected IosWindow(long parent)
>
>
> ### iOS native code
>
> With the removal of the `_createChildWindow` method, the following JNI \
> method in `IosWindow` can be removed:
>
> Java_com_sun_glass_ui_ios_IosWindow__1createChildWindow(JNIEnv *, \
> jobject, jlong)
>
> As a note, I don't have a setup to build this. It is a simple, safe \
> change, but should be double-checked by someone from Gluon.
Changes look good.
-------------
Marked as reviewed by aghaisas (Reviewer).
PR: https://git.openjdk.java.net/jfx/pull/615
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic