Graphical quirks/glitches running over X forwarding

All your suggestions, requests and ideas for future development
Post Reply
oijlkj
Posts: 7
Joined: 05 Apr 2017, 14:46

Graphical quirks/glitches running over X forwarding

Post by oijlkj »

I'm testing filebot running on my Debian Jessie server over ssh X forwarding to my mac desktop using Xquartz.

While the app is functional, there are several graphical glitches. I'm thinking this might be related to the widgets used in the app, but I don't have a lot of experience running apps this way, other than SpiderOak which works properly (no glitches, window resize works, etc.).

Bits of the interface indicated in the screenshots below are missing

http://imgur.com/5C5RVP9
http://imgur.com/4qH0eSI

In addition, when I'm using the rename function and it finds multiple matching films and asks me to select the correct one, each time I'm presented with that dialog, it gets bigger and bigger, until the submit button and the resize widget in the lower right are off screen. Attempting to drag the window so I can reach the buttons & resize leaves visual artifacts all over the place, until the app becomes unusable and I close and reopen it.

I've tested with the linux java options on this page but they haven't resolved the issue http://docs.oracle.com/javase/8/docs/te ... s.html#d3d

I'm running filebot 4.7.8, XQuartz 2.7.11 (xorg-server 1.18.4), Mac OS 10.12.4 and Java 8.

I suspect not many people are running the app this way, but if anyone can provide guidance on what else to explore, logs, etc. I'd appreciate it.
User avatar
rednoah
The Source
Posts: 22984
Joined: 16 Nov 2011, 08:59
Location: Taipei
Contact:

Re: Graphical quirks/glitches running over X forwarding

Post by rednoah »

:idea: Direct3D is a Windows API. Setting it ON or OFF makes no difference on Linux.

OpenGL and XRender could potentially make a differnce though:
http://docs.oracle.com/javase/8/docs/te ... tml#opengl
http://docs.oracle.com/javase/8/docs/te ... ml#xrender


Please run filebot -script fn:sysinfo and post the output.
:idea: Please read the FAQ and How to Request Help.
oijlkj
Posts: 7
Joined: 05 Apr 2017, 14:46

Re: Graphical quirks/glitches running over X forwarding

Post by oijlkj »

I explored the opengl, xrender and pmoffscreen options without resolving the issue.

Here's the output with personal data redacted:

Code: Select all

FileBot 4.7.8 (r4846)
JNA Native: 5.1.0
MediaInfo: 0.7.92.1
7-Zip-JBinding: 9.20
Chromaprint: 1.4.2
Extended Attributes: OK
Unicode Filesystem: OK
GVFS: groovy.lang.MissingPropertyException: No such property: net for class: Script1
Possible solutions: now, log, _def
Script Bundle: 2017-04-03 (r494)
Groovy: 2.4.8
JRE: Java(TM) SE Runtime Environment 1.8.0_121
JVM: 64-bit Java HotSpot(TM) 64-Bit Server VM
CPU/MEM: 4 Core / 1 GB Max Memory / 24 MB Used Memory
OS: Linux (amd64)
Package: DEB
Data: /home/<username>/.filebot
uname: Linux <servername> 3.16.0-4-amd64 #1 SMP Debian 3.16.39-1+deb8u2 (2017-03-07) x86_64 GNU/Linux

------------------- UPDATE AVAILABLE: FileBot 4.7.9 (r4984) --------------------

Done ヾ(@⌒ー⌒@)ノ
User avatar
rednoah
The Source
Posts: 22984
Joined: 16 Nov 2011, 08:59
Location: Taipei
Contact:

Re: Graphical quirks/glitches running over X forwarding

Post by rednoah »

Have you tried this?

Code: Select all

export JAVA_OPTS="-Dsun.java2d.xrender=False -Dsun.java2d.opengl=False"
And this?

Code: Select all

export JAVA_OPTS="-Dsun.java2d.xrender=True -Dsun.java2d.opengl=False"
And this?

Code: Select all

export JAVA_OPTS="-Dsun.java2d.xrender=False -Dsun.java2d.opengl=True"



You can use this script to verify that you're indeed passing along the options correctly:

Code: Select all

filebot -script fn:sysenv
:idea: Please read the FAQ and How to Request Help.
oijlkj
Posts: 7
Joined: 05 Apr 2017, 14:46

Re: Graphical quirks/glitches running over X forwarding

Post by oijlkj »

Issue still present with any of those options

Code: Select all

export _JAVA_OPTIONS="-Dsun.java2d.xrender=False -Dsun.java2d.opengl=False"
filebot
Picked up _JAVA_OPTIONS: -Dsun.java2d.xrender=False -Dsun.java2d.opengl=False
libGL error: No matching fbConfigs or visuals found
libGL error: failed to load driver: swrast
Failed in glXMakeCurrent

Code: Select all

export _JAVA_OPTIONS="-Dsun.java2d.xrender=True -Dsun.java2d.opengl=False"
filebot
Picked up _JAVA_OPTIONS: -Dsun.java2d.xrender=True -Dsun.java2d.opengl=False
WARNING: The version of libXrender.so cannot be detected.
,The pipe line will be enabled, but note that versions less than 0.9.3
may cause hangs and crashes
	See the release notes for more details.
XRender pipeline enabled
Xrender: INFO: Jules library not installed.
libGL error: No matching fbConfigs or visuals found
libGL error: failed to load driver: swrast
Failed in glXMakeCurrent

Code: Select all

export _JAVA_OPTIONS="-Dsun.java2d.xrender=False -Dsun.java2d.opengl=True"
filebot
Picked up _JAVA_OPTIONS: -Dsun.java2d.xrender=False -Dsun.java2d.opengl=True
libGL error: No matching fbConfigs or visuals found
libGL error: failed to load driver: swrast
Could not enable OpenGL pipeline for default config on screen 0
libGL error: No matching fbConfigs or visuals found
libGL error: failed to load driver: swrast
Failed in glXMakeCurrent
User avatar
rednoah
The Source
Posts: 22984
Joined: 16 Nov 2011, 08:59
Location: Taipei
Contact:

Re: Graphical quirks/glitches running over X forwarding

Post by rednoah »

I see a lot of OpenGL errors in those logs. You have graphics glitches. Maybe there's a connection? Maybe not. But I'd try googling for some of these error messages and see if there's a way to fix them.
:idea: Please read the FAQ and How to Request Help.
oijlkj
Posts: 7
Joined: 05 Apr 2017, 14:46

Re: Graphical quirks/glitches running over X forwarding

Post by oijlkj »

In my SSH session setting
export LIBGL_ALWAYS_INDIRECT=1

resolves
libGL error: No matching fbConfigs or visuals found
libGL error: failed to load driver: swrast

on the mac setting
defaults write org.macosforge.xquartz.X11 enable_iglx -bool true

resolves
Failed in glXMakeCurrent

but I have a new error
Prism-ES2 Error : GL_VERSION (major.minor) = 1.4

research suggests this is a warning only and will be fixed in java 9
Regarding FX8:

Prism-ES2 Error : GL_VERSION (major.minor) = 1.4 message is not an error but notification message. It will be removed in jdk8 release: https://javafx-jira.kenai.com/browse/RT-29273

https://bugs.openjdk.java.net/browse/JDK-8088421

Glitches are still there despite the above. When I have a moment, I'll try x forwarding from a Debian VM and post results.
oijlkj
Posts: 7
Joined: 05 Apr 2017, 14:46

Re: Graphical quirks/glitches running over X forwarding

Post by oijlkj »

Works fine from a Debian VM to a Debian server.

On the mac/xquartz, I see this output in my terminal whenever I click a button in the filebot interface:

Code: Select all

Exception in thread "AWT-EventQueue-0" java.lang.ClassCastException: sun.awt.image.BufImgSurfaceData cannot be cast to sun.java2d.xr.XRSurfaceData
	at sun.java2d.xr.XRPMBlitLoops.cacheToTmpSurface(XRPMBlitLoops.java:148)
	at sun.java2d.xr.XrSwToPMScaledBlit.Scale(XRPMBlitLoops.java:381)
	at sun.java2d.pipe.DrawImage.scaleSurfaceData(DrawImage.java:988)
	at sun.java2d.pipe.DrawImage.renderImageScale(DrawImage.java:641)
	at sun.java2d.pipe.DrawImage.scaleImage(DrawImage.java:724)
	at sun.java2d.pipe.DrawImage.scaleImage(DrawImage.java:1068)
	at sun.java2d.pipe.ValidatePipe.scaleImage(ValidatePipe.java:219)
	at sun.java2d.SunGraphics2D.drawImage(SunGraphics2D.java:3398)
	at sun.java2d.SunGraphics2D.drawImage(SunGraphics2D.java:3342)
	at javax.swing.plaf.nimbus.ImageScalingHelper.drawChunk(ImageScalingHelper.java:238)
	at javax.swing.plaf.nimbus.ImageScalingHelper.paint(ImageScalingHelper.java:170)
	at javax.swing.plaf.nimbus.LoweredBorder.doPaint(LoweredBorder.java:117)
	at javax.swing.plaf.nimbus.AbstractRegionPainter.paint0(AbstractRegionPainter.java:731)
	at javax.swing.plaf.nimbus.AbstractRegionPainter.paint(AbstractRegionPainter.java:155)
	at javax.swing.plaf.nimbus.LoweredBorder.paintBorder(LoweredBorder.java:182)
	at javax.swing.plaf.BorderUIResource.paintBorder(BorderUIResource.java:113)
	at javax.swing.border.TitledBorder.paintBorder(TitledBorder.java:316)
	at javax.swing.JComponent.paintBorder(JComponent.java:949)
	at javax.swing.JComponent.paint(JComponent.java:1057)
	at javax.swing.JComponent.paintChildren(JComponent.java:889)
	at javax.swing.JComponent.paint(JComponent.java:1065)
	at javax.swing.JComponent.paintChildren(JComponent.java:889)
	at javax.swing.JComponent.paint(JComponent.java:1065)
	at javax.swing.JComponent.paintChildren(JComponent.java:889)
	at javax.swing.JComponent.paint(JComponent.java:1065)
	at javax.swing.JComponent.paintChildren(JComponent.java:889)
	at javax.swing.JComponent.paint(JComponent.java:1065)
	at javax.swing.JLayeredPane.paint(JLayeredPane.java:586)
	at javax.swing.JComponent.paintChildren(JComponent.java:889)
	at javax.swing.JComponent.paint(JComponent.java:1065)
	at javax.swing.JComponent.paintToOffscreen(JComponent.java:5210)
	at javax.swing.BufferStrategyPaintManager.paint(BufferStrategyPaintManager.java:290)
	at javax.swing.RepaintManager.paint(RepaintManager.java:1272)
	at javax.swing.JComponent._paintImmediately(JComponent.java:5158)
	at javax.swing.JComponent.paintImmediately(JComponent.java:4969)
	at javax.swing.RepaintManager$4.run(RepaintManager.java:854)
	at javax.swing.RepaintManager$4.run(RepaintManager.java:814)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:80)
	at javax.swing.RepaintManager.paintDirtyRegions(RepaintManager.java:814)
	at javax.swing.RepaintManager.paintDirtyRegions(RepaintManager.java:789)
	at javax.swing.RepaintManager.prePaintDirtyRegions(RepaintManager.java:738)
	at javax.swing.RepaintManager.access$1200(RepaintManager.java:64)
	at javax.swing.RepaintManager$ProcessingRunnable.run(RepaintManager.java:1732)
	at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:311)
	at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:756)
	at java.awt.EventQueue.access$500(EventQueue.java:97)
	at java.awt.EventQueue$3.run(EventQueue.java:709)
	at java.awt.EventQueue$3.run(EventQueue.java:703)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:80)
	at java.awt.EventQueue.dispatchEvent(EventQueue.java:726)
	at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201)
	at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
	at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)
	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
	at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)
http://stackoverflow.com/questions/3418 ... id-7172749
The effect of this exception is, that the whole window of jEdit or parts are not drawn and stay white.
Sounds similar to my issue.

The fix suggested on stack (export _JAVA_OPTIONS="-Dsun.java2d.xrender=False) does not resolve the issue for me.
oijlkj
Posts: 7
Joined: 05 Apr 2017, 14:46

Re: Graphical quirks/glitches running over X forwarding

Post by oijlkj »

If I understand this and the results of the rest of my searching correctly, this is a bug in Java 8. Not present in Java 7 and scheduled for fix in Java 9.

https://bugs.openjdk.java.net/browse/JDK-7172749

I'll use it from a VM in the meantime.

Thanks for your followup.
User avatar
rednoah
The Source
Posts: 22984
Joined: 16 Nov 2011, 08:59
Location: Taipei
Contact:

Re: Graphical quirks/glitches running over X forwarding

Post by rednoah »

1.
Does _JAVA_OPTIONS work for all System Properties? I would not be 100% sure of that...

Check your assumptions:

Code: Select all

export _JAVA_OPTS="-Dorg.example.test=true"
filebot -script fn:sysenv | grep "org.example.test"

2.
Presumably, sun.java2d.xr refers to the XRender pipeline, so I have reason to believe it's still using XRender, which would explain why it doesn't work, since XRender hasn't actually been disabled:

Code: Select all

at sun.java2d.xr.XRPMBlitLoops.cacheToTmpSurface(XRPMBlitLoops.java:148)
:idea: Please read the FAQ and How to Request Help.
oijlkj
Posts: 7
Joined: 05 Apr 2017, 14:46

Re: Graphical quirks/glitches running over X forwarding

Post by oijlkj »

Here you go:

Code: Select all

# export _JAVA_OPTIONS="-Dorg.example.test=true"
# filebot -script fn:sysenv | grep "org.example.test"
Picked up _JAVA_OPTIONS: -Dorg.example.test=true
_JAVA_OPTIONS: -Dorg.example.test=true
org.example.test: true
Post Reply