On Wed, 18 Jun 2025 21:48:22 GMT, Martin Fox <m...@openjdk.org> wrote:

>> @jayathirthrao Thanks for the thorough response. And, again, it's great to 
>> see Metal happening.
>> 
>>> * GlassView3D ->  GlassViewEventHandler(Since it is common class which 
>>> handles events for both OpenGL and Metal pipeline) Or GlassSubView(Since it 
>>> is added as subView in GlassHostView in GlassView.m). Please suggest if you 
>>> have better names that we can use here.
>> 
>> I want to keep the GlassView prefix since these classes implement the 
>> platform side of the View class in the toolkit. If we were to rename 
>> anything it would be GlassViewCGL and GlassViewMTL since these are more 
>> closely related to Prism than the toolkit View class. But I'm overthinking 
>> things. For now I think we should keep GlassView and GlassView3D along with 
>> GlassViewCGL and GlassViewMTL and just clarify what's going on in the 
>> comments. At some point I want to combine GlassView and GlassView3D into one 
>> class but that can wait for a follow-up issue.
>> 
>>> 4. Regarding setOpaque() in GlassWindow.m
>> 
>> In my testing the setOpaque call isn't happening in this PR since the layer 
>> hasn't been created yet. But it doesn't seem to matter (?)
>> 
>> I'm having a hard time reproducing the original PickTest3D bug in the master 
>> branch. The screenshots in the bug report show translucency but the original 
>> bug report doesn't mention it and the PickTest3D code doesn't call for it. I 
>> tweaked PickTest3D to try a few combinations of setOpacity and 
>> DECORATED/TRANSPARENT and that setOpaque call didn't seem to make any 
>> difference even in the master branch. I must be missing something.
>> 
>> As for the UNIFIED issue I don't think there's a bug. The implementation 
>> relied on the OS to draw a brushed metal background but Apple removed that 
>> years ago and now just draws black. I will take a look but only because I 
>> want to understand how this works; we might need similar logic if we want to 
>> support desktop translucency effects. UNIFIED is deprecated and doesn't work 
>> on Windows either so we should probably close the new bug as Never Fix.
>
>> I'm having a hard time reproducing the original PickTest3D bug in the master 
>> branch.
> 
> Spoke too soon. PickTest3D has been tweaked since the original Mac bug was 
> posted and resolved.

@beldenfox Found out the root cause for why we are seeing layer as nil 
GlassWindow.m.

We have additional level of abstraction for views and we set layer for 
GlassViewCGL/MTL and not for GlassView3D. We already have change in 
GlassView.m->getGlassView() to get GlassView3D object and then call getLayer() 
on it. We need to make similar change in GlassWindow.m->getMacView(), with this 
change we are able to get appropriate layer by calling getLayer(). This change 
is made and testing is in progress.

Also what i am also noticing is setOpaque() in GlassWindow.m is never called on 
OpenGL pipeline when i run Ensemble8 demos, PickTest3D or test present in 
[JDK-8095040](https://bugs.openjdk.org/browse/JDK-8095040). I will keep this 
OpenGL specific setOpaque call since we don't want to make changes related to 
OpenGL in this PR. But i will add comment about refactoring and moving it to 
CGL specific class in future.

Regarding classname change, i will keep GlassView3D name as it is but remove 3D 
references in other classes.

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

PR Comment: https://git.openjdk.org/jfx/pull/1824#issuecomment-2988208764

Reply via email to