negative line spacing in Text

2018-06-13 Thread Matthias Hänel
Hey guys,

since Java 8 all javafx multiline text controls (Label, TextArea, TextFlow) 
support linespacing via the css -fx-line-spacing attribute and Properties (on 
TextArea on Text-Node of Skin accessible via lookup).
However none of them seem to support negative value which would be necessary to 
achieve a linespacing smaller then the default, since default value is 0.
If a negative value is used, e.g. for a Labels line spacing, it will simply not 
wrap or line feed(\n).
Is there a way to achieve a line spacing smaller than the default with these 
components?

Thank you in advance
Matthias
--
Matthias Hänel
hae...@onexip.com

onexip GmbH
Am Waldschloesschen 2 | D-01099 Dresden | Germany

http://www.ultramixer.com
http://www.onexip.com






Re: Blur effect on live scene?

2015-08-13 Thread Matthias Hänel
Hi Jim,


 On 8/10/2015 11:44 PM, Matthias Hänel wrote:
 If we had a snapshot to texture mechanism then that might reduce the 
 memory copying of the work around technique.
 
 Well, did you say there is no snapshot to texture in JavaFX? In plain OpenGL 
 you can use FBO's (Frame Buffer Objects) to render them. This is nothing 
 more than a snapshot. They are even sliceable and strechable.
 
 To be clear, there is no API to directly specify snapshot this Node/Group to 
 a texture and give me a handle to it to manipulate.  As I said later, there 
 is a mechanism to get Node/trees rendered into a texture and that is the Node 
 cache property, but we do that behind the scenes, the developer doesn't get a 
 handle to the texture in that case.

Okay, that are different OSI layers. On the lowest OpenGL Layer it could be a 
FBO implementation. On higher layers there must be APIs that support this.



 I'd argue that we sort of do have something like that - it is the cache 
 flag.  If a Node is cached then we do have a copy of it in a texture and 
 that can help make the Blur Effect work more efficiently, but there may be 
 some additional copies between textures if everything isn't set up right.  
 Still, that is an avenue for someone to check to see if there isn't a 
 better way to achieve this effect in the short term...
 
 I am not pretty sure what cache does. Probably some hasmap that holds 
 objects and they are not instantly destroyed in the graphics RAM?
 
 It is not a hashmap.
 
 It is a hint to save the rendering of that node in a buffer:
 
 https://docs.oracle.com/javase/8/javafx/api/javafx/scene/Node.html#cacheProperty
 
 I don't like the way that this doc comment is worded as it implies that using 
 it on a node that is blurred is unwise, but if the node is animated over even 
 GPU acceleration of the rendering and blurring operations are going to have 
 some cost that it could save.

That documentation says nodes are cached as Bitmaps. In GPU or in CPU space? It 
is not clear here. I suspect it is in CPU RAM space. 
That will just lead to more copy-tasks from CPU to GPU or not? If optimized 
there is no benefit at all as stated in the docu note that on some platforms 
such as GPU accelerated platforms there is little benefit. 

Actually, I would expect that renered Nodes are textures in GPU-VRAM to get the 
most performance out of it.


 From my current point the major problem with JavaFX is still the same.
 
 1. Has a good API
 2. renders most of its stuff in software, hence does not run performant
 3. Has good approaches, but the overall sight on the technology is broken 
 somewhere.
 
 I am not sure how you come to the conclusion that it renders most of its 
 stuff in software.  It renders quite a lot in hardware.  Even the example 
 here of using snapshot to optimize a blurred background - the rendering of 
 the scene is done in hw.  It is only copied to main memory because the API 
 requires a persistent image.  If you render that image to the screen it is 
 copied back into a texture and reused from that texture unless we run low on 
 vram.  There is no rendering in software there, only use of a heap buffer for 
 persistent storage...

Your point is that it uses hardware to render and it just uses snapshot to 
satisfy the API? 


My current understaning is ... what happens in our blurred-effect case?

1. the application constructs a JavaFX node tree. 
2. the node tree is rendered mostly in hardware (shader effects and so on on 
top) to the main framebuffer
3. Snapshot calls ReadPixels (or whatever it is called on the particular 
platform) 
4. JavaFX encapsulates this new image with Object
5. We draw the new image with effects to the OGL context with the same 
node-tree API as we did before on top of the first node-tree.


That works, but there is too much CPU and memcpy involved for my believe. 
Furthermore ReadPixels takes forever in
an OpenGL perspective. 
Since this is just one very simple effect, it is actually not good to spend 
more than approx. 20% CPU (i7) load on it.
I expect 0% (not noticable) for this blurry effect.



The ideal implementation from my perspective would be:
1. the application constructs a JavaFX node tree. 
2. the node tree is rendered mostly in hardware (shader effects and so on on 
top) to a virtual framebuffer in the GPU space
3. The virtual framebuffer is drawn by a simple drawVert-call for the background
4. The virtual framebuffer is drawn once again shaped and shaded (blurry 
filter) by another drawVert-call

This would reduce CPU usage by a very big amount of cycles. 

(From an Shader perspective we could reduce GPU load one more if we merge point 
3 and 4 and run a partially shader to blur just the upper corner.
Well this is much more hand-coding and not good integratable in a bigger API.)


Even tough these ReadPixel-Functions to retrieve GPU rendered images to the CPU 
space are not very fast.



I have to correct my assumption that JavaFX renders most

Re: Blur effect on live scene?

2015-08-11 Thread Matthias Hänel
Hey Jim,


internally we are argueing pretty often about pro and cons of different 
technologies espacially java.
When I first read about JavaFX I was very happy to see a hardware accelerated 
approach in the Java world that could stop the common sense of laggy java-apps.

From a software persepective I am located at the very first few layers right in 
the hardware (firmware) and right above (drivers, interfaces etc.). That's why 
please forgive me if I am wrong on UI specific stuff. This is not my expertice. 
Actually, I build the native opengl implementation for our software. That means 
it uses jogl, but it is pretty standard OGL. Therefor I a know a bit about the 
OGL state machine and their usage. I am very sure DirectX has similar 
techniques for any of those purposes.


 Am 10.08.2015 um 20:29 schrieb Jim Graham james.gra...@oracle.com:
 
 Let me understand what is going on here.
 
 I get the result you are trying to achieve - blur the scene as background for 
 something.
 
 I get that Mac and iOS seem to have direct support for this technique which 
 appears to work faster than what we provide via the Effect mechanism.
 
 I also get that attempts to make it appear better via snapshot will 
 unfortunately involve a copy to main memory to produce the Image object.
 
 If we had a snapshot to texture mechanism then that might reduce the memory 
 copying of the work around technique.

Well, did you say there is no snapshot to texture in JavaFX? In plain OpenGL 
you can use FBO's (Frame Buffer Objects) to render them. This is nothing more 
than a snapshot. They are even sliceable and strechable.

Yesterday we discussed the JavaFX API and we came to the conclusion that there 
must be tow APIs 1. standard copyFromRAMAnDraw 2. FBO based. Drawing to a 
framebuffer and manipulating. This is not only needed for this small effect 
here. It is much more. 

One very big damand of a new technology would be a feature that's called 
conext sharing. This is one of the most important copy-prevention-mechanisms 
to us. That makes it possible to push an image to the graphics RAM and draw it 
two, three or even multiple times.


 I'd argue that we sort of do have something like that - it is the cache flag. 
  If a Node is cached then we do have a copy of it in a texture and that can 
 help make the Blur Effect work more efficiently, but there may be some 
 additional copies between textures if everything isn't set up right.  Still, 
 that is an avenue for someone to check to see if there isn't a better way to 
 achieve this effect in the short term...

I am not pretty sure what cache does. Probably some hasmap that holds objects 
and they are not instantly destroyed in the graphics RAM?


 There is the implication that one can add a shader to an overlay texture that 
 will cause it to have a dynamic blurred lens effect.  I'm not familiar with 
 how that would be done.  AFAIK, shaders work on inputs and produce an output 
 which is transferred to the destination using the pixel transfer functions 
 and you can't source the destination pixels in the shader in order to blur 
 them.  I would imagine that the Mac/iOS technique is done by sourcing 
 directly from the back buffer into the overlay texture using a blurring 
 shader.  That gives the overlay texture a solid background that is a blurred 
 copy of the back buffer.  They then draw the overlay contents (menu bar?) on 
 top of that blurred background data and transfer the overlay texture back 
 into the scene.  The blurred vision you are seeing is not the pixels being 
 blurred through the overlay texture but rather a very quickly managed 
 blurred copy of the data in the underlying buffer.
   If the scene changes, then the entire process would need to be repeated on 
 the new underlying pixels to get a new blurred copy of them as background in 
 the overlay texture.  I can also imagine that they may have more direct 
 support for blurring (there is an OpenGL EXT_convolution extension which we 
 do not use - using our own convolution shaders instead - which may 
 potentially work faster than what we do).  Also, they may be a little more 
 efficient at managing the buffers involved in that dynamic operation (our 
 Decora Effect engine isn't necessarily set up to use the back buffer as a 
 source and so sometimes we may have to render parts of a scene an extra time 
 specially to make an input texture for Decora).


I am not sure what Decora is, but you are right with the sourcing from the 
back. You can only shade 1:1 in OGL's shading Engine but that's not a real 
problem since we have FBO's :) The Background is rendered to an FBO. This FBO 
renders as a Background and a second time the same FBO is rendered as Blurry 
shaped Foreground. 


 
 If I'm understanding all of this correctly, then it seems that:
 
 - it may be time to investigate tighter integration of Decora and Prism 
 texture mechanisms (they use the same underlying objects, but don't have a 
 good way to 

Re: Stage hide/show from Swing

2015-05-18 Thread Matthias Hänel
Thanks Scott for your fast answer.


Well, in this case 

PlatformImpl.runLater(new Runnable()
{
@Override
public void run()
{
...


is never called. I believe it is not called because the Stage is not running 
anymore and 
therefore the JFX Main Thread is stopped.

I am now on 1.8.0_60 and have still the same behaviour :(


regards
Matthias




 Am 18.05.2015 um 14:17 schrieb Scott Palmer swpal...@gmail.com:
 
 I would have thought that #2 was correct. What happened when you tried it?
 Did you make sure JavaFX didn't try to shutdown automatically when the last 
 Stage was hidden?
 
 
 Scott
 
 On May 18, 2015, at 7:37 AM, Matthias Hänel hae...@ultramixer.com wrote:
 
 Hello there,
 
 
 I have a stage that is been called from a Java Swing application. This is 
 not a real problem
 since I can run follwing code:
 
 PlatformImpl.startup(new Runnable()
 {
   @Override
   public void run()
   {
   myStage = new myStage();
   myStage.show();
   }
 });
 
 
 That works so far. 
 
 No I would like to close this stage from the swing application. I can call:
 
 Platform.runLater(new Runnable()
 {
   @Override
   public void run()
   {
   myStage.hide();
   }
 });
 
 
 This also works. 
 
 Since I have a toggle-Button to hide and show the stage from the swing 
 application, I would like
 to re-show the stage and I would like to know when the stage is showing or 
 not. This seems to be nearly impossible by now.
 
 What did I try?
 
 1. I tried to shutdown the javafx entire with 
 com.sun.javafx.tk.Toolkit.getToolkit().exit(); in the hide process. So I 
 expected to use PlatformImpl.startup again. Unfortunately, it did not work.
 
 2. I tried to leave javafx untouched. The second time I only call 
 PlatformImpl.runLater to create a new scene.
 
 3. I tried to run it from the swing thread without Platform.run... ... this 
 failed obviuosly. (I just had no further ideas ;)) 
 
 
 Does anyone tried this before? Any advise will be helpful :)
 
 
 
 Thanks in advance
 Matthias
 
 
 



Re: Stage hide/show from Swing

2015-05-18 Thread Matthias Hänel
thanks Tom for your answer.

I just tried to use Platform.setImplicitExit(false) but it didn't do anything 
different.
I suspect I should have this runLater behaviour for the second start/show 
phase. And hide will not close 
the JFX thread interanally. Still there is no Runable call at the second try.

PlatformImpl.runLater(new Runnable()
{
@Override
public void run()

is still not called :(



Matthias


 Am 18.05.2015 um 16:26 schrieb Tom Schindl tom.schi...@bestsolution.at:
 
 So then simply call Platform.setImplicitExit(false)?
 
 Tom
 
 On 18.05.15 16:19, Matthias Hänel wrote:
 Thanks Scott for your fast answer.
 
 
 Well, in this case 
 
 PlatformImpl.runLater(new Runnable()
 {
@Override
public void run()
  {
  ...
 
 
 is never called. I believe it is not called because the Stage is not running 
 anymore and 
 therefore the JFX Main Thread is stopped.
 
 I am now on 1.8.0_60 and have still the same behaviour :(
 
 
 regards
 Matthias
 
 
 
 
 Am 18.05.2015 um 14:17 schrieb Scott Palmer swpal...@gmail.com:
 
 I would have thought that #2 was correct. What happened when you tried it?
 Did you make sure JavaFX didn't try to shutdown automatically when the last 
 Stage was hidden?
 
 
 Scott
 
 On May 18, 2015, at 7:37 AM, Matthias Hänel hae...@ultramixer.com wrote:
 
 Hello there,
 
 
 I have a stage that is been called from a Java Swing application. This is 
 not a real problem
 since I can run follwing code:
 
 PlatformImpl.startup(new Runnable()
 {
  @Override
  public void run()
  {
  myStage = new myStage();
  myStage.show();
  }
 });
 
 
 That works so far. 
 
 No I would like to close this stage from the swing application. I can call:
 
 Platform.runLater(new Runnable()
 {
  @Override
  public void run()
  {
  myStage.hide();
  }
 });
 
 
 This also works. 
 
 Since I have a toggle-Button to hide and show the stage from the swing 
 application, I would like
 to re-show the stage and I would like to know when the stage is showing or 
 not. This seems to be nearly impossible by now.
 
 What did I try?
 
 1. I tried to shutdown the javafx entire with 
 com.sun.javafx.tk.Toolkit.getToolkit().exit(); in the hide process. So I 
 expected to use PlatformImpl.startup again. Unfortunately, it did not work.
 
 2. I tried to leave javafx untouched. The second time I only call 
 PlatformImpl.runLater to create a new scene.
 
 3. I tried to run it from the swing thread without Platform.run... ... 
 this failed obviuosly. (I just had no further ideas ;)) 
 
 
 Does anyone tried this before? Any advise will be helpful :)
 
 
 
 Thanks in advance
 Matthias
 
 
 
 
 
 
 -- 
 Thomas Schindl, CTO
 BestSolution.at EDV Systemhaus GmbH
 Eduard-Bodem-Gasse 5-7, A-6020 Innsbruck
 http://www.bestsolution.at/
 Reg. Nr. FN 222302s am Firmenbuchgericht Innsbruck



Stage hide/show from Swing

2015-05-18 Thread Matthias Hänel
Hello there,


I have a stage that is been called from a Java Swing application. This is not a 
real problem
since I can run follwing code:

PlatformImpl.startup(new Runnable()
{
@Override
public void run()
{
myStage = new myStage();
myStage.show();
}
});


That works so far. 

No I would like to close this stage from the swing application. I can call:

Platform.runLater(new Runnable()
{
@Override
public void run()
{
myStage.hide();
}
});


This also works. 

Since I have a toggle-Button to hide and show the stage from the swing 
application, I would like
to re-show the stage and I would like to know when the stage is showing or not. 
This seems to be nearly impossible by now.

What did I try?

1. I tried to shutdown the javafx entire with 
com.sun.javafx.tk.Toolkit.getToolkit().exit(); in the hide process. So I 
expected to use PlatformImpl.startup again. Unfortunately, it did not work.

2. I tried to leave javafx untouched. The second time I only call 
PlatformImpl.runLater to create a new scene.

3. I tried to run it from the swing thread without Platform.run... ... this 
failed obviuosly. (I just had no further ideas ;)) 


Does anyone tried this before? Any advise will be helpful :)



Thanks in advance
Matthias





Re: (Multi)Touch with Windows 7

2014-07-25 Thread Matthias Hänel
I'll try to answer this inhouse ;) 
Oracle guys, please correct me if I am wrong.
JavaFX 2.2 had touch support for Windows7 and this is still there in JFX8.
On the other hand multi touch is only availible from Windows8 on.

regards
Matthias


Am 25.07.2014 um 09:40 schrieb Tobias Bley t...@ultramixer.com:

 Hi,
 
 does anyone know if it’s possible to use JavaFX 8 and touch gestures like 
 swipe on Windows 7?
 
 Best regards,
 Tobi
 



Re: Exposing native surface or opengl handle

2014-06-26 Thread Matthias Hänel
Hey John,


Am 26.06.2014 um 10:23 schrieb Robert Krüger krue...@lesspain.de:

 On Thu, Jun 26, 2014 at 9:40 AM, John Hendrikx hj...@xs4all.nl wrote:
 
 On 13/06/2014 08:57, Robert Krüger wrote:
 
 Hi,
 
 it has been discussed a number of time in the passed but let me
 quickly summarize:
 
 A number of people have requested a feature that provides the ability
 to have native code draw into a surface provided by a JavaFX
 application as fast as technically possible, i.e. with no indirection
 or copying because use cases for this were mostly cases where
 performance was critical, e.g. HD/UHD video players, real-time
 visualization etc. where losing even e few percent would make a
 software written in JavaFX unable to compete with native products
 (e.g. in the video area nobody will use a video player that is not
 able to play the content smoothly that VLC player or Quicktime can on
 the same machine).
 
 Although copying is used, I've combined JavaFX and VLC in this fashion for
 over a year already, and video is smooth and stable -- stable enough to
 watch full length HD movies, at 20% increased speed (the speed I normally
 watch them).
 
 Of course, if the target machine is barely able to play these, then the
 extra copying overhead (which is smaller than people think) may be too much.
 
 Yes and this becomes more and more a problem of not so weak machines
 when you go to higher resolutions than FHD that you can display well
 on a Retina display and thus a competitive disadvantage when targeting
 that market. I agree that for a lot of video applications the copying
 approach is probably good enough, though.

Well, from my perspective it is always a bad idea to memcpy whenever you can 
avoid it ;)
Our applications do a lot more than just display a video image. I really don't 
want
to have a bottleneck by design. 


Matthias



Re: Exposing native surface or opengl handle

2014-06-25 Thread Matthias Hänel
Hey all,


it's great to have a new thread like this. Robert exactly pointed out what 
we actually need. 
I have seen an approach to integrate JFX in JOGL and vice versa. This approach
is always been a copying of the pixel buffers between those two frameworks.
From my perspective this is not a real good approach because of obvious 
performance issues.  Yesterday, I had a better idea.

my idea:
I know it is very hard to have JFX exposing a real GLCanvas/Context. I used 
JOGL for quite some time and I know the JFX rendering pipeline a bit.
Please correct me if I am wrong. The most applications need some point to draw. 
The best pointer would be an exposed FBO from Prism that can be used by
Jogl/LWJGL. Additionally we would need a possibility to share the JFX 
OGL-Context with another
one, so we could reuse this FBO in a second window. Okay, this wouldn't needed
if I could share textures over scenes.

I know there is one major limitation. In windows Prism is using DirectX by 
default, so there won't be a possible interaction with Jogl. I am sure some
DirectX guys really like to have there hands on the surface-layer as well ;)

Well, to used the Jogl way above we would also need a stable OGL implementation
of Prism for Windows. Last time I tried it it was not even comparable. I am not
sure why, but OGL on Mac and Linux works pretty good.


Matthias

--
Matthias Hänel
Geschäftsführer/ Managing Director



UltraMixer Digital Audio Solutions
Am Waldschlößchen 2
01099 Dresden

-
i...@ultramixer.com  http://www.ultramixer.com

Am 23.06.2014 um 17:43 schrieb Robert Krüger krue...@lesspain.de:

 Thanks a lot for the valuable and very encouraging info! I will track
 that issue and use that for further communication.
 
 Robert
 
 On Mon, Jun 23, 2014 at 5:15 PM, Stephen F Northover
 steve.x.northo...@oracle.com wrote:
 I'm sorry this thread scrolled away into the bitbucket in the sky.
 
 Last JavaOne, we wrote a prototype that showed native integration on OS X.
 We parented a native sheet dialog in an FX stage and providing an OpenGL
 node.  The code was a prototype that worked only on OS X.  The Open GL node
 allowed drawing JOGL and LWJGL to draw on a texture that was created by FX.
 This mean that the OpenGL node could take part in FX animations and effects.
 
 I will attach the prototype code to
 https://javafx-jira.kenai.com/browse/RT-36215.  I need to find it and make
 sure that it still compiles and works.  This week is M5 RDP2 and today is
 likely to be a write off for a number of reasons.
 
 https://wiki.openjdk.java.net/display/OpenJFX/8u20
 
 Please ping me in the JIRA if the code doesn't show up sometime this week.
 The prototype is the basis of one possible implementation and needs some
 work.  There are other possible implementations and this is not the final
 word on the issue.
 
 Steve
 
 
 On 2014-06-23, 10:03 AM, Robert Krüger wrote:
 
 Sorry, my last reply did not go to the list. That was unintended.
 
 Oracle-Team, please someone comment on this, at least on what should
 be done regarding a Jira Issue (or several ones?) to track any
 progress on this and collect ideas  requirements.
 
 Best regards,
 
 Robert
 
 On Fri, Jun 13, 2014 at 10:41 PM, Robert Krüger krue...@lesspain.de
 wrote:
 
 Thanks for the hint. I think this is similar to what a colleague of
 mine did a while ago as a proof of concept using other com.sun.api
 that then went away. As long as we're bundling the JRE with our
 product and we're desperate enough to get it working, we might do
 something like this but it's of course just a last resort. Lets hope
 someone from Oracle says something.
 
 
 
 On Fri, Jun 13, 2014 at 8:05 PM, Scott Palmer swpal...@gmail.com wrote:
 
 That’s basically it. It isn’t perfect, but its so simple I don’t see why
 it can’t be done quickly.  We are already talking about using native code 
 to
 render.
 
 That said, com.sun.glass.ui.Window contains the field we want:
 
 // Native object handle (HWND, or NSWindow*, etc.)
 long ptr;
 
 You could be evil and hack it now with reflection, but it relies on
 internal implementation details.
 
 In my application I already create a native window for video preview…
 though not as a child of the FX window.  The problem is that there isn’t a
 straight-forward, reliable, supported way to get the window handle to use
 for the parent (JavaFX) window.  There are ways to hack it, but they 
 aren’t
 pretty.
 
 
 Scott
 
 On Jun 13, 2014, at 7:55 AM, Robert Krüger krue...@lesspain.de wrote:
 
 Just for my understanding: Your approach would be to get the native
 window handle for the hosting JFX stage, then leave an open space in
 the layout for e.g. the player canvas that will be implemented
 natively and then create a native child window that just reacts to
 move and resize events of its native parent?
 
 On Fri

Re: JavaFX 2 + with LWJGL ( OpenGL )

2014-04-08 Thread Matthias Hänel
Hey guys,


I followed the discussion with interest. I just checked the lwjdlfx-approach. 
It looked promising in the first place but it has still major performance 
issues. It is based on the snapshot functionality
in the Node base class. This is actually a similar approach we've seen in the 
JFXPanel
which indeed has horrible performance. From my point of view it is not the way 
to go.


What I really like to see is a way to get a textureID directly into the JavaFX 
opengl context wraped with an Image object. I know it's pretty hard to do this 
cross-platform
and cross-implementation (DirectX, OpenGl) but otherwise JFX can't be mixed 
with Third-Party 
applications.

Okay, using JFX on top of a OpenGL game just as a replacement of the 
UI-framework like Ogre-UI 
etc. might still be a good point since there is no high performance need. 

In our case we need both high performance UI and high performance additional 
OpenGL drawings.
As of today I could only use JavaFX with a SwingPanel that encapsulates a JOGL 
context... 


just my 2 cents
Matthias


Am 07.04.2014 um 18:47 schrieb Stephen F Northover 
steve.x.northo...@oracle.com:

 The lwjglfx solution.
 
 Steve
 
 On 2014-04-07 12:45 PM, Exo Verse wrote:
 @ Steve
 Which approach are you referring too ? The lwjglfx solution or this
 transparency background solution ?
 
 The lwjglfx I am assuming here since its drawing out to an image and back
 in again. But if your speaking about my transparency issue I solved, I
 didn't realize it was sending out to an image and back again. Could you
 please elaborate as to which solution your speaking about ?
 
 Torak
 
 
 On Mon, Apr 7, 2014 at 12:33 PM, Stephen F Northover 
 steve.x.northo...@oracle.com wrote:
 
 This solution is cool, but it draws to an image, sucks out the bits and
 then converts that to an FX image.  This is a good approach because it uses
 API and does not rely on any internals of FX. Hopefully it is fast enough
 for you.
 
 Steve
 
 
 On 2014-04-06 12:41 PM, Exo Verse wrote:
 
 Yea the OpenGL comes with your graphics drivers for your video card. So
 your correct that it doesn't ship with JavaFX. What I have been going on
 about is trying to find a way to use JavaFX with LWJGL. In case you are
 unaware, LWJGL just means Light Weight Java OpenGL and its a wrapper for
 the OpenGL API. It's an alternative to JOGL.
 
 On another note, as I did a search, Thanks to Tom showing me that link I
 examined that code and I found something of interest in the JOGL code
 interface..  well it lead me to a google search, and viola..  LWJGL with
 JavaFX. :)
 
 LINK :
 https://github.com/Spasi/LWJGL-FX
 
 So just wanted to post the link here and say thanks for all of your help.
 :)
 
 Cheers,
 Torak
 
 
 On Sun, Apr 6, 2014 at 12:35 PM, Tom Schindl tom.schi...@bestsolution.at
 wrote:
  JavaFX does not ship OpenGL binaries on windows you have to build it your
 own.
 
 Please note:
 a) if there are people who manage to write a prism pipeline on jogl why
 should you not be able to do the same with lwjgl?
 b) the talk i mentionned from felipe and steve show how to get access to
 the native OpenGL context and there from you can use any API you like
 can't
 remember which one they used
 
 Tom
 
 Von meinem iPhone gesendet
 
  Am 06.04.2014 um 18:18 schrieb Exo Verse tora...@gmail.com:
 Thanks, but as I mentioned in my original post, I don't like JOGL. It
 doesn't work with my setup. I use LWJGL because its only about the
 OpenGL
 and not other libraries, and its an easy API wrapper to use. There are
 
 many
 
 many reason I hate JOGL.. but this thread is not about hating on JOGL,
 
 its
 
 about finding a way to use LWJGL with JavaFX2+.
 
 Also, Win32 API calls can use both DirectX and OpenGL APIs. And it
 
 doesn't
 
 matter what Windows OS you're using. I have tested this out from Windows
 
 XP
 
 all the way to Windows 7 - 32/64 Bit with no problem.
 
 Cheers
 Torak
 
 
 On Sun, Apr 6, 2014 at 11:52 AM, Tom Schindl 
 
 tom.schi...@bestsolution.atwrote:
 
 There is a talk from Felipe and Steve at J1 last year how to embed
 OpenGL
 into FX using *internal* API!
 Search for it on parleys - this does not help you on Win32 which uses
 directx instead of javafx. BTW there are people doing a JOGL pipeline
 https://bitbucket.org/dejayberlin/joglfxpipeline/src!
 
 Tom
 Von meinem iPhone gesendet
 
  Am 06.04.2014 um 17:25 schrieb Exo Verse tora...@gmail.com:
 Yea its a shame that using JavaFX as an option along with OpenGL
 wasn't
 even thought of to begin with. I don't understand why they limit you
 
 like
 they do. Them trying to recreate the wheel and make their own version
 of
 a
 3D interface is just plain stupid if it can't run low level. I can see
 
 2D
 games and applications with a LOT of usage for JavaFX and its 2D
 graphics
 API. But True 3D needs low level other wise its a waste of time.
 Well, thanks for the replies. Guess I'll have to stick with using
 other
 sources for my GUI. It's just that I like JavaFX 

Re: JFXPanel vs. real world usage

2013-10-28 Thread Matthias Hänel
okay, we w#ll do this soon. It's currently inside a bigger project.
Since the performance lag is huge, I am not sure how any application could work 
;)

Technical spoken... I have seen the implementation is something like this:

1. creating a standard swing panel
2. call the software rendering process from paintComponent
2.1. basically, inside the rendering the following is done:
1. capturing the JFX Scene to an IntBuffer. Just this step is very 
hardware dependent. The capturing from an opengl context is very different for 
any graphics card.
2. passing the IntBuffer to java 
3. draw the IntBuffer to a graphics object


From my perspective this code can be used to get nothing better than 10fps on a 
current state PC, while
a direct capsulation of the opengl context would be fps unlimited.


regards
Matthias




Am 24.10.2013 um 21:05 schrieb Stephen F Northover 
steve.x.northo...@oracle.com:

 Please enter a JIRA with your sample code attached.
 
 Steve
 
 On 2013-10-24 2:37 PM, Tobias Bley wrote:
 I added a simple accordion as JFXPanel into a swing frame and the 
 performance is not good. the cpu usage goes up to 100% when moving the mouse 
 over the accordion title panes (hover effect). The resizing performance is 
 bad too.
 
 
 Am 24.10.2013 um 20:10 schrieb rdarr...@yahoo.com:
 
 I have the same experience. We're using this and it works ok as far as 
 performance.
 -Original Message-
 From: Pedro Duque Vieira pedro.duquevie...@gmail.com
 Sender: openjfx-dev-boun...@openjdk.java.net
 Date: Thu, 24 Oct 2013 18:20:42
 To: OpenJFX Mailing Listopenjfx-dev@openjdk.java.net
 Subject: RE: JFXPanel vs. real world usage
 
 Hi Matthias,
 
 I don't see any problems with performance and I've been using this a lot.
 
 Best regards,
 
 -- 
 Pedro Duque Vieira
 
 
 



JFXPanel vs. real world usage

2013-10-24 Thread Matthias Hänel
Hi,


I just took a look at JFXPanel. This implementation is from my perspective just
a pin point for a real implementation. The problem with the current one is,
that a JFX scene is rendered down to a pixelbuffer that is rendered on a Swing
Panel by paintComponent. Is there a particular reason for this?

Actually, I expected the embedding of the OpenGL/DirectX context in other words
the heavy weigth component of the entire JFX scene. 

In the current stage of the JFXPanel it's not even usable for very small addons,
since the performance is soo damn bad ;) 

Maybe I missed another way to get JFX inserted into an existing 
Swing-Application?
Any hints?


regards
Matthias

mouse vs. touch events on touch systems like iOS/Android/Dukepad

2013-10-21 Thread Matthias Hänel
Hi,


I believe my conceptual question on touch/mouse events has been missed because 
of the other questions
in the JAVAFX on ANDROID thread. That's why I would like to start a new 
discussion about touch events.


1. The main question is how are touch and internal mouse events handled? Javafx 
controls seem to rely on mouse events.
That's why I assume there must be some kind of an emulation layer. Are these 
emulated in Prism, Glass (Java-Glasses)
or even lower? Where is it suppose to emulate the mouse events? 

What I've seen right now is that iOS-native glass does the mouse
emulation by itself in GlassViewDelegate.m. Touch events and Mouse events are 
sent from the lowest layer.
In Android there are only touch events passed to the lens implementation. On 
udev which I assume is the implementation
that's used for Dukepad it does only pass touch events. Udev and Android are 
lens implementations so, they are using
the same Java classes which do kind of mouse emulation for toch events. But 
it's not exactly the same as the iOS
codes does.

iOS:
sends Touch, Mouse-Enter and Mouse-Down

Lens (Android/Dukepad):
sends Mouse-Enter and Touch


The major differences in calling order and the missung mouse down leeds me to 
the assumption that the events are actually
missing.



2. Is that mouse emulation supposed to be eliminated due to the latest 
lensWindow changes? 
  I believe that must be handled in higher layers not in the input layer itself.


3. What is the input layer for the Dukepad? I think it's the udev 
implementation and this does pretty much the same as the current 
android implementation. I just want to have a stable reference to look at ;)


4. Has anyone with a Dukepad the opportunity to test the ListView-Example? For 
me on Android, it doesn't scroll at all with any touches.
With the automatic scrolling (from Richard sources) I get around 30fps on the 
Samsung Galaxy Tab 10.1.



regards
Matthias



Re: JAVAFX on ANDROID

2013-10-18 Thread Matthias Hänel
Hi Tomas,


I am currently running a bit different openjfx than yours and got it kind of 
running.

1. the main difference is font deactivation. You disabled the entire CSS 
renderer, which I did not.
I am deactivating just the font renderer. That means a lot more patching but it 
gives me the chance
to see CSS rendering taking place ;) It works pretty well even without fonts 
(hard coded font sizes).

2. I probably found the touch handling crash. Since I have an old Samusung 
Galaxy Tab 10.1 here 
I can assure this bug effects the device as well. It's the Platform.runLater 
bugfix. This is also quite
stable and makes it possible to play Brickbreaker ;)

3. I had to disable the new security stuff in GlassStage and GlassScene.


further testing:
 
Tobi, gave me his iOS/JavaFX testing tool that just displays a colored ListView 
and while it scrolls
the rendering process writes fps to stdout. This tool compiles and runs but it 
does nothing while touching.
The reason is probably that some javafx controls are still using mouse 
emulation.
I see in the iOS port that the events are fired twice at first as touch events 
and then
as mouse events. It looks like the latest change for multitouch events dropped 
the dual event 
sending. I tried to patch android.c like this:


JNIEXPORT void JNICALL 
Java_com_oracle_dalvik_FXActivity_00024InternalSurfaceView_onMultiTouchEventNative
  (JNIEnv *env, jobject jview, jint jpcount, jintArray jactions, jintArray jids,
jintArray jtouchXs, jintArray jtouchYs) {
...
(*_notifyMultiTouchEvent)(jpcount, actions, ids, touchXs, touchYs);

if( jpcount == 1
 (actions[0]==com_sun_glass_events_TouchEvent_TOUCH_PRESSED || 
actions[0]==com_sun_glass_events_TouchEvent_TOUCH_RELEASED) )
{
int pressed = 0;
if (actions[0] == com_sun_glass_events_TouchEvent_TOUCH_PRESSED)
pressed = com_sun_glass_events_MouseEvent_DOWN;
else
if (actions[0] == com_sun_glass_events_TouchEvent_TOUCH_RELEASED)
pressed = com_sun_glass_events_MouseEvent_UP;

LOGV(TAG, emulate button click event - UM hacked pressed:%i x:%i 
y:%i\n, pressed, touchXs[0], touchYs[0] );
(*_notifyButtonEvent)(pressed,
  com_sun_glass_events_MouseEvent_BUTTON_LEFT,
  touchXs[0], touchYs[0]);
}
...
}


Unfortunately, it doesn't work as expected.


I have some questions:

1. Is that mouse emulation supposed to be eliminated due to the latest 
lensWindow changes? 
   I believe that must be handled in higher layers not in the input layer 
itself.

2. What is the best way to fix this issue? Reimplementing the mouse emulation 
is not a real good solution.

3. The Listview shows a scrollbar. That makes me believe that the control 
doesn't really know that it is running
in embedded mode. Maybe the mouse emulation is not possible if the embedded 
mode is correcly enabled.
Where do I enable the embedded mode? I though it is this property 
android.com.sun.javafx.isEmbedded=true. That's of course enabled
in javafx.platform.properties.

4. What is the input layer for the Dukepad? I think it's the udev 
implementation and this does pretty much the same as the current 
android implementation. I just want to have a stable reference to look at ;)

Probably those questions are not only for Tomas since they are pretty general.


regards
Matthias

Re: JAVAFX on ANDROID

2013-10-18 Thread Matthias Hänel

Am 17.10.2013 um 17:45 schrieb Richard Bair richard.b...@oracle.com:

 Usually, file jira and attach a patch (and a unit test for expedited service 
 :-))
 
 Richard


Ok, I'll check that for the future. Actually, I am not sure how a unit test 
would look
like for a crash fix like that ;)

Matthias

Re: JAVAFX on ANDROID

2013-10-17 Thread Matthias Hänel
Hi,

I found the reason for the touch crashes on Android. It's a JNI threading error 
in the
current implementation. We have to enqueue the touch events into the javafx 
dispatch thread.

There is a workaround for this attached in the java source file at 
dispatchTouchEvent 
and dispatchKeyEvent. What is the best way to propose changes in the future?


regards
Matthias






Am 15.10.2013 um 13:50 schrieb Matthias Hänel hae...@ultramixer.com:

 Hey Tomas,
 
 
 I've seen a check-in for RT-32802. This seems to be your fix. There are a lot 
 of interface changes.
 Could you explain the changes a bit, so I can merge it by hand into my jfx678 
 code? Today, I merged
 from Stefans b111 JFX78 but it will take a while to get your changes through 
 this way ;)
 
 
 regards
 Matthias
 
 
 
 Am 14.10.2013 um 14:31 schrieb tomas.brandalik tomas.branda...@oracle.com:
 
 Hi Matthias,
 cool, I'm surprised you we're able to run it on emulator. I run on device 
 not on emulator for a long time. There wasn't  opengl extension 
 GL_EXT_texture_format_BGRA in emulator. But that could have changed 
 overtime.
 Regarding events: yes there seems to be a problem which I haven't 
 discovered. I've pushed multitouch support and broke touch events on dalvik. 
 I will fix that soon.
 In order to replace t2k there is freetype library for fonts and glyphs 
 access and harfbuzz for layouting available among system libraries.  
 Although google discourages to use them since they aren't part of public 
 api. It can bring all sorts of compatibility problems (harfbuzz 
 implementation has changed in recent android releases for example). Yes try 
 pango if you have time to spare and share results please.
 
 good luck
 -Tomas
 
 On 10/14/2013 01:45 PM, Matthias Hänel wrote:
 Hi Tomas,
 
 
 never mind, I found the problem over here in the simulator ;) I had to 
 activate the GPU support.
 
 So, now I had to BGRA image format for Android and now I get JFX up and 
 running without fonts.
 
 There are two things missing:
 1. fonts- here we probably need to get pango working for Android 
 right?
 2. touch events - I saw that you have got a special Android proxy for the 
 input stuff 
 Java_com_oracle_dalvik_FXActivity_00024InternalSurfaceView_onTouchEventNative
 This seems to crash for some reason. any idea? It's not that complicated 
 but it is producing a stack trace.
 
 After fixing the touch events Brickbreaker with Niklas' no-font-patch 
 should work. I'd pleased to test this.
 
 
 kind regards
 Matthias
 
 
 
 Am 14.10.2013 um 12:17 schrieb Matthias Hänel hae...@ultramixer.com:
 
 Hi Tomas,
 
 
 since Tobi told me he had a similiar problem in the first place with the 
 iOS port and he managed to run JFX8 without font.
 We deactivated fonts. There is some code to deactivate and after that it 
 looks like it is starting the JFX-Application.
 
 10-14 06:06:49.529: INFO/GLASS(1546): glass_view_drawBegin
 10-14 06:06:49.529: INFO/javafx(1546): Using getAndroidNativeWindow() from 
 glass.
 10-14 06:06:49.579: ERROR/libEGL(1546): called unimplemented OpenGL ES API
 10-14 06:06:49.579: ERROR/libEGL(1546): called unimplemented OpenGL ES API
 10-14 06:06:49.579: ERROR/libEGL(1546): called unimplemented OpenGL ES API
 10-14 06:06:49.579: ERROR/libEGL(1546): called unimplemented OpenGL ES API
 10-14 06:06:49.579: ERROR/javafx(1546): Some video driver error or 
 programming error occurred. Framebuffer object status is invalid. (FBO - 
 823)
 10-14 06:06:49.579: ERROR/libEGL(1546): called unimplemented OpenGL ES API
 10-14 06:06:49.579: ERROR/javafx(1546): Error creating framebuffer object 
 with TexID 1)
 10-14 06:06:49.599: ERROR/libEGL(1546): called unimplemented OpenGL ES API
 10-14 06:06:49.649: ERROR/libEGL(1546): called unimplemented OpenGL ES API
 10-14 06:06:49.649: ERROR/libEGL(1546): called unimplemented OpenGL ES API
 10-14 06:06:49.649: ERROR/libEGL(1546): called unimplemented OpenGL ES API
 10-14 06:06:49.649: ERROR/libEGL(1546): called unimplemented OpenGL ES API
 10-14 06:06:49.649: ERROR/libEGL(1546): called unimplemented OpenGL ES API
 10-14 06:06:49.649: ERROR/libEGL(1546): called unimplemented OpenGL ES API
 10-14 06:06:49.659: WARN/System.err(1546): 
 java.lang.reflect.InvocationTargetException
 10-14 06:06:49.669: WARN/System.err(1546): at 
 java.lang.reflect.Method.invokeNative(Native Method)
 10-14 06:06:49.669: WARN/System.err(1546): at 
 java.lang.reflect.Method.invoke(Method.java:525)
 10-14 06:06:49.709: DEBUG/dalvikvm(1546): GC_FOR_ALLOC freed 330K, 10% 
 free 4129K/4564K, paused 32ms, total 32ms
 10-14 06:06:49.709: WARN/System.err(1546): at 
 com.sun.prism.es2.ES2ResourceFactory.createStockShader(ES2ResourceFactory.java:253)
 10-14 06:06:49.709: WARN/System.err(1546): at 
 com.sun.prism.impl.ps.BaseShaderContext.getPaintShader(BaseShaderContext.java:227)
 10-14 06:06:49.709: WARN/System.err(1546): at 
 com.sun.prism.impl.ps.BaseShaderContext.validatePaintOp(BaseShaderContext.java:485)
 10-14 06:06:49.709: WARN

Re: JAVAFX on ANDROID

2013-10-17 Thread Matthias Hänel
the mailerdemon striped my java file ;)

The fixed code snippet from FXActivity.java is:

} else {
//single touch
actions[0] = actionCode;
ids[0] = event.getPointerId(0);
touchXs[0] = (int)event.getX();
touchYs[0] = (int)event.getY();
}
//System.out.println(Android original event =  + event);
Platform.runLater(new Runnable()
{
@Override
public void run()
{
onMultiTouchEventNative(pcount, actions, ids, touchXs, 
touchYs);
}
});
return true;
}

@Override
public boolean dispatchKeyEvent(final KeyEvent event) {
Platform.runLater(new Runnable() {
@Override
public void run() {
onKeyEventNative(event.getAction(), event.getKeyCode(), 
event.getCharacters());
}
});
return true;
}
 

regards 
Matthias



Am 17.10.2013 um 17:01 schrieb Matthias Hänel hae...@ultramixer.com:

 Hi,
 
 I found the reason for the touch crashes on Android. It's a JNI threading 
 error in the
 current implementation. We have to enqueue the touch events into the javafx 
 dispatch thread.
 
 There is a workaround for this attached in the java source file at 
 dispatchTouchEvent 
 and dispatchKeyEvent. What is the best way to propose changes in the future?
 
 
 regards
 Matthias
 
 
 
 
 
 
 Am 15.10.2013 um 13:50 schrieb Matthias Hänel hae...@ultramixer.com:
 
 Hey Tomas,
 
 
 I've seen a check-in for RT-32802. This seems to be your fix. There are a 
 lot of interface changes.
 Could you explain the changes a bit, so I can merge it by hand into my 
 jfx678 code? Today, I merged
 from Stefans b111 JFX78 but it will take a while to get your changes through 
 this way ;)
 
 
 regards
 Matthias
 
 
 
 Am 14.10.2013 um 14:31 schrieb tomas.brandalik tomas.branda...@oracle.com:
 
 Hi Matthias,
 cool, I'm surprised you we're able to run it on emulator. I run on device 
 not on emulator for a long time. There wasn't  opengl extension 
 GL_EXT_texture_format_BGRA in emulator. But that could have changed 
 overtime.
 Regarding events: yes there seems to be a problem which I haven't 
 discovered. I've pushed multitouch support and broke touch events on 
 dalvik. I will fix that soon.
 In order to replace t2k there is freetype library for fonts and glyphs 
 access and harfbuzz for layouting available among system libraries.  
 Although google discourages to use them since they aren't part of public 
 api. It can bring all sorts of compatibility problems (harfbuzz 
 implementation has changed in recent android releases for example). Yes try 
 pango if you have time to spare and share results please.
 
 good luck
 -Tomas
 
 On 10/14/2013 01:45 PM, Matthias Hänel wrote:
 Hi Tomas,
 
 
 never mind, I found the problem over here in the simulator ;) I had to 
 activate the GPU support.
 
 So, now I had to BGRA image format for Android and now I get JFX up and 
 running without fonts.
 
 There are two things missing:
 1. fonts- here we probably need to get pango working for Android 
 right?
 2. touch events - I saw that you have got a special Android proxy for the 
 input stuff 
 Java_com_oracle_dalvik_FXActivity_00024InternalSurfaceView_onTouchEventNative
 This seems to crash for some reason. any idea? It's not that complicated 
 but it is producing a stack trace.
 
 After fixing the touch events Brickbreaker with Niklas' no-font-patch 
 should work. I'd pleased to test this.
 
 
 kind regards
 Matthias
 
 
 
 Am 14.10.2013 um 12:17 schrieb Matthias Hänel hae...@ultramixer.com:
 
 Hi Tomas,
 
 
 since Tobi told me he had a similiar problem in the first place with the 
 iOS port and he managed to run JFX8 without font.
 We deactivated fonts. There is some code to deactivate and after that it 
 looks like it is starting the JFX-Application.
 
 10-14 06:06:49.529: INFO/GLASS(1546): glass_view_drawBegin
 10-14 06:06:49.529: INFO/javafx(1546): Using getAndroidNativeWindow() 
 from glass.
 10-14 06:06:49.579: ERROR/libEGL(1546): called unimplemented OpenGL ES API
 10-14 06:06:49.579: ERROR/libEGL(1546): called unimplemented OpenGL ES API
 10-14 06:06:49.579: ERROR/libEGL(1546): called unimplemented OpenGL ES API
 10-14 06:06:49.579: ERROR/libEGL(1546): called unimplemented OpenGL ES API
 10-14 06:06:49.579: ERROR/javafx(1546): Some video driver error or 
 programming error occurred. Framebuffer object status is invalid. (FBO - 
 823)
 10-14 06:06:49.579: ERROR/libEGL(1546): called unimplemented OpenGL ES API
 10-14 06:06:49.579: ERROR/javafx(1546): Error creating framebuffer object 
 with TexID 1)
 10-14 06:06:49.599: ERROR/libEGL(1546): called unimplemented OpenGL ES API
 10-14 06:06:49.649: ERROR/libEGL(1546): called unimplemented OpenGL ES API
 10-14 06:06

Re: JAVAFX on ANDROID

2013-10-16 Thread Matthias Hänel
Hi Tomas,


thanks for your patch.
Your way doesn't seem to be so different to the jfx78 approach except the 
retro-stuff ;)
In the meanwhile I am pretty sure, this will not be entirely needed since 
DAVLIK can run java7 
class code. 

Nevertheless, I tried your patch... 
Patching works. After adapting some files and putting the correct pathes in the 
configuration
I got the gradle script working. Unfortunatly, I used the tip of openjfx8. That 
means there 
is a lot of new stuff e.g. usage of Function.java that's required from jdk8. 
Which tag did you use?
B111 or are you on the cutting edge at tip? I'll try B111 from master hopefully 
this new stuff 
isn't in there ;)
It looks like porting Function.java back to java7 is not so easy.


regards
Matthias


Am 15.10.2013 um 15:52 schrieb tomas.brandalik tomas.branda...@oracle.com:

 Hi Matthias,
 you are right when I build for dalvik I build with a flag DALVIK_VM.
 Pls be careful when building changes in native code you have to do clean 
 build. There is still an issue in jfx gradle script.
 I create my build differently. I start with openjfx patch it to be jdk7 
 compatible then use retrolambda to replace class file versions to jdk6.
 If you want give it a try use attached patch and do following:
 clone openjfx
 cd rt
 patch -p1  fix_jdk7_compat.patch
 edit android-build.sh with your paths
 android-build.sh retrojfxrt
 
 iI will build dalvik compatible jfxrt6.jar
 
 -Tomas
 
 On 10/15/2013 03:07 PM, Matthias Hänel wrote:
 Hi Tomas,
 
 
 I couldn't stand to merge it by hand ;) I merged the changes from RT-32802 
 into my backport.
 
 Unfortunately, it still crashes:
 
 10-15 08:59:47.182: INFO/GLASS(3644): JNI call notifyTouchEvent
 10-15 08:59:47.202: INFO/GLASS(3644): Window 1[0x2a41a138] isVisible=true, 
 state=NORMAL
 10-15 08:59:47.202: INFO/GLASS(3644): Absolute coordinates 542,414 are on 
 window 1[0x2a41a138] as relative coordinates 670,292
 10-15 08:59:47.202: INFO/GLASS(3644): Returning focused window 1[0x2a41a138]
 10-15 08:59:47.202: ERROR/dalvikvm(3644): ERROR: detaching thread with 
 interp frames (count=42)
 10-15 08:59:47.213: INFO/dalvikvm(3644): main prio=5 tid=1 RUNNABLE
 10-15 08:59:47.213: INFO/dalvikvm(3644): | group=main sCount=0 dsCount=0 
 obj=0x414c5578 self=0x2a00d090
 10-15 08:59:47.222: INFO/dalvikvm(3644): | sysTid=3644 nice=0 sched=0/0 
 cgrp=apps handle=1073811452
 10-15 08:59:47.222: INFO/dalvikvm(3644): | state=R schedstat=( 6545290672 
 1534059118 8044 ) utm=610 stm=44 core=0
 10-15 08:59:47.252: INFO/dalvikvm(3644): at 
 com.oracle.dalvik.FXActivity$InternalSurfaceView.onMultiTouchEventNative(Native
  Method)
 10-15 08:59:47.252: INFO/dalvikvm(3644): at 
 com.oracle.dalvik.FXActivity$InternalSurfaceView.dispatchTouchEvent(FXActivity.java:234)
 
 Do you have any idea?
 The error ERROR: detaching thread with interp frames (count=42) seems to 
 be a thread attach/detach mistake
 in the code. In androidLens.c there is some ATTACH_JNI_THREAD and 
 DTACH_JNI_THREAD code.
 There are two implementations. One that's filled with (*vm)- and the other 
 one is left blank.
 Currently, the macro DALVI_VM is not defined, so the code is filled. This 
 seems to be odd to me.
 Actually, I tried defining DAVLIK_VM but it doesn't help. It still crashes 
 with the sme error.
 
 
 regards
 Matthais
 
  
 Am 14.10.2013 um 14:31 schrieb tomas.brandalik tomas.branda...@oracle.com:
 
 Hi Matthias,
 cool, I'm surprised you we're able to run it on emulator. I run on device 
 not on emulator for a long time. There wasn't  opengl extension 
 GL_EXT_texture_format_BGRA in emulator. But that could have changed 
 overtime.
 Regarding events: yes there seems to be a problem which I haven't 
 discovered. I've pushed multitouch support and broke touch events on 
 dalvik. I will fix that soon.
 In order to replace t2k there is freetype library for fonts and glyphs 
 access and harfbuzz for layouting available among system libraries.  
 Although google discourages to use them since they aren't part of public 
 api. It can bring all sorts of compatibility problems (harfbuzz 
 implementation has changed in recent android releases for example). Yes try 
 pango if you have time to spare and share results please.
 
 good luck
 -Tomas
 
 On 10/14/2013 01:45 PM, Matthias Hänel wrote:
 Hi Tomas,
 
 
 never mind, I found the problem over here in the simulator ;) I had to 
 activate the GPU support.
 
 So, now I had to BGRA image format for Android and now I get JFX up and 
 running without fonts.
 
 There are two things missing:
 1. fonts- here we probably need to get pango working for Android 
 right?
 2. touch events - I saw that you have got a special Android proxy for the 
 input stuff 
 Java_com_oracle_dalvik_FXActivity_00024InternalSurfaceView_onTouchEventNative
 This seems to crash for some reason. any idea? It's not that complicated 
 but it is producing a stack trace.
 
 After fixing the touch events Brickbreaker with Niklas' no-font-patch 
 should

Re: JAVAFX on ANDROID

2013-10-15 Thread Matthias Hänel
Hey Tomas,


I've seen a check-in for RT-32802. This seems to be your fix. There are a lot 
of interface changes.
Could you explain the changes a bit, so I can merge it by hand into my jfx678 
code? Today, I merged
from Stefans b111 JFX78 but it will take a while to get your changes through 
this way ;)


regards
Matthias



Am 14.10.2013 um 14:31 schrieb tomas.brandalik tomas.branda...@oracle.com:

 Hi Matthias,
 cool, I'm surprised you we're able to run it on emulator. I run on device not 
 on emulator for a long time. There wasn't  opengl extension 
 GL_EXT_texture_format_BGRA in emulator. But that could have changed 
 overtime.
 Regarding events: yes there seems to be a problem which I haven't discovered. 
 I've pushed multitouch support and broke touch events on dalvik. I will fix 
 that soon.
 In order to replace t2k there is freetype library for fonts and glyphs access 
 and harfbuzz for layouting available among system libraries.  Although google 
 discourages to use them since they aren't part of public api. It can bring 
 all sorts of compatibility problems (harfbuzz implementation has changed in 
 recent android releases for example). Yes try pango if you have time to spare 
 and share results please.
 
 good luck
 -Tomas
 
 On 10/14/2013 01:45 PM, Matthias Hänel wrote:
 Hi Tomas,
 
 
 never mind, I found the problem over here in the simulator ;) I had to 
 activate the GPU support.
 
 So, now I had to BGRA image format for Android and now I get JFX up and 
 running without fonts.
 
 There are two things missing:
 1. fonts- here we probably need to get pango working for Android 
 right?
 2. touch events - I saw that you have got a special Android proxy for the 
 input stuff 
 Java_com_oracle_dalvik_FXActivity_00024InternalSurfaceView_onTouchEventNative
 This seems to crash for some reason. any idea? It's not that complicated but 
 it is producing a stack trace.
 
 After fixing the touch events Brickbreaker with Niklas' no-font-patch should 
 work. I'd pleased to test this.
 
 
 kind regards
 Matthias
 
 
 
 Am 14.10.2013 um 12:17 schrieb Matthias Hänel hae...@ultramixer.com:
 
 Hi Tomas,
 
 
 since Tobi told me he had a similiar problem in the first place with the 
 iOS port and he managed to run JFX8 without font.
 We deactivated fonts. There is some code to deactivate and after that it 
 looks like it is starting the JFX-Application.
 
 10-14 06:06:49.529: INFO/GLASS(1546): glass_view_drawBegin
 10-14 06:06:49.529: INFO/javafx(1546): Using getAndroidNativeWindow() from 
 glass.
 10-14 06:06:49.579: ERROR/libEGL(1546): called unimplemented OpenGL ES API
 10-14 06:06:49.579: ERROR/libEGL(1546): called unimplemented OpenGL ES API
 10-14 06:06:49.579: ERROR/libEGL(1546): called unimplemented OpenGL ES API
 10-14 06:06:49.579: ERROR/libEGL(1546): called unimplemented OpenGL ES API
 10-14 06:06:49.579: ERROR/javafx(1546): Some video driver error or 
 programming error occurred. Framebuffer object status is invalid. (FBO - 
 823)
 10-14 06:06:49.579: ERROR/libEGL(1546): called unimplemented OpenGL ES API
 10-14 06:06:49.579: ERROR/javafx(1546): Error creating framebuffer object 
 with TexID 1)
 10-14 06:06:49.599: ERROR/libEGL(1546): called unimplemented OpenGL ES API
 10-14 06:06:49.649: ERROR/libEGL(1546): called unimplemented OpenGL ES API
 10-14 06:06:49.649: ERROR/libEGL(1546): called unimplemented OpenGL ES API
 10-14 06:06:49.649: ERROR/libEGL(1546): called unimplemented OpenGL ES API
 10-14 06:06:49.649: ERROR/libEGL(1546): called unimplemented OpenGL ES API
 10-14 06:06:49.649: ERROR/libEGL(1546): called unimplemented OpenGL ES API
 10-14 06:06:49.649: ERROR/libEGL(1546): called unimplemented OpenGL ES API
 10-14 06:06:49.659: WARN/System.err(1546): 
 java.lang.reflect.InvocationTargetException
 10-14 06:06:49.669: WARN/System.err(1546): at 
 java.lang.reflect.Method.invokeNative(Native Method)
 10-14 06:06:49.669: WARN/System.err(1546): at 
 java.lang.reflect.Method.invoke(Method.java:525)
 10-14 06:06:49.709: DEBUG/dalvikvm(1546): GC_FOR_ALLOC freed 330K, 10% free 
 4129K/4564K, paused 32ms, total 32ms
 10-14 06:06:49.709: WARN/System.err(1546): at 
 com.sun.prism.es2.ES2ResourceFactory.createStockShader(ES2ResourceFactory.java:253)
 10-14 06:06:49.709: WARN/System.err(1546): at 
 com.sun.prism.impl.ps.BaseShaderContext.getPaintShader(BaseShaderContext.java:227)
 10-14 06:06:49.709: WARN/System.err(1546): at 
 com.sun.prism.impl.ps.BaseShaderContext.validatePaintOp(BaseShaderContext.java:485)
 10-14 06:06:49.709: WARN/System.err(1546): at 
 com.sun.prism.impl.ps.BaseShaderContext.validatePaintOp(BaseShaderContext.java:418)
 10-14 06:06:49.709: WARN/System.err(1546): at 
 com.sun.prism.impl.ps.BaseShaderContext.validatePaintOp(BaseShaderContext.java:351)
 10-14 06:06:49.709: WARN/System.err(1546): at 
 com.sun.prism.impl.BaseContext.validateClearOp(BaseContext.java:116)
 10-14 06:06:49.709: WARN/System.err(1546): at 
 com.sun.prism.es2.ES2Graphics.clear(ES2Graphics.java:78)
 10

Re: JAVAFX on ANDROID

2013-10-14 Thread Matthias Hänel
Hey Tom,


thanks for you answer.

while the OSX font stuff is there and Orcale's goal is to use the native font 
renderer on each platform.
I am sure there must be some kind of an Android font renderer in the code. I 
couldn't find one until now.

Another question: Since I ported you latest jfx78 to Java6 it's now jfx678 ;) 
What would be the best
way to contribute the port? Do you think it's good to contribute it to jfx78 or 
to have a separate
jfx68 branch?


regards
Matthias



Am 11.10.2013 um 18:22 schrieb Tom Schindl tom.schi...@bestsolution.at:

 On 11.10.13 18:10, Matthias Hänel wrote:
 Hi Tomas,
 
 
 today, I took the time to investigate a little more time on this. 
 
 1. I build an entirely new openjfx78 build for android
 2. starting this gave me several errors that lead me to the 
 conclusion that I need a java6 openjfx
 3. based on openjfx78 I ported it back to java6 (adapted gradled scripts, 
 and tons of java source code)
 4. Now it's almost running on an 18th android. All libraries are firing up 
 until the CssStyleHelper 
 is called with a static call to createStyleHelper.
 
 That looks like the font stuff is not in jfx78. That's why new Font 
 returns with null and therefore
 
 On OS-X font stuff is definately there in jfx78, but the low-level font
 stuff is loaded using reflection (at least this was the cause on robovm)!
 
 Tom



Re: JAVAFX on ANDROID

2013-10-14 Thread Matthias Hänel
Hi Richard,


thanks for your fast answer.


Am 11.10.2013 um 18:53 schrieb Richard Bair richard.b...@oracle.com:

 As frustrating as it is, the fact is that today Oracle has no announced plans 
 to release any official JVM for Android and iOS. That being the case, the 
 biggest hurdle to getting FX on iOS and Android is the VM. On the iOS side 
 there has been some success with RoboVM. On Android you can just use Dalvik 
 if you back port to Java 6, or you have to find another VM (XMLVM maybe?? 
 Anybody convince Excelsior to support Android?) that can do the job.

The main point of irritation comes from an quite unclear position about 
providing the JVM and JFX of the Java-platform. 
That's why I will sumarize what I heard between the lines:

1. there is NO official jvm planned for iOS and Android in the near future.
2. jfx8 is beeing officially maintained until some point for iOS and Android 
but the actual port is left to the open source community.
3. Linux ARM support is beeing focused officially on the Freescale ARM-platform.

our conclusion is:
1. that's not that bad anymore since we have RoboVM for iOS and Davlik on 
Android.
2. this statement should have been made 1 year ago. Probably, I missed it but 
it was not clear to my team as well until last week.
   That's why we took the challenge to do it our selves.
3. This is good for the open source development since we probably can rely on 
the CPU optimized parts for ARM.



 There are two parts the problem of a VM. One is the VM technology itself, 
 which is probably the lesser of the two issues because there are a handful of 
 decent VMs around (if you include Dalvik, you've already got one on Android). 
 The second problem are the class libraries. Generally JavaFX doesn't rely on 
 too much from JavaSE beyond what is in the base module; threading and 
 collections and concurrency and so forth. However we are using the diamond 
 operator and in a few places we might use multi-catch (although I don't know 
 of such places myself) and definitely we use default methods in interfaces in 
 one location (ObservableList). Generally we've tried to make it easy to back 
 port to 7, but haven't tried to keep 6 up to date. I would be very interested 
 in the list of code changes Matthias had to make to better understand the 
 situation.


Yes, mainly it was the multi-catch stuff and the diamonds and some default 
methods. It's still enough to maintain ;)


 As far as fonts (from Matthias' email) I believe the Android port currently 
 uses T2K but Felipe and Tomas were talking about using the new Font support 
 which would delegate directly to Android APIs. This might be one area that 
 Matthias' and Felipe and Tomas can work closely on to get a contribution to 
 make this happen!

I have seen T2K in the ARM-Linux port but it's not in the sources since it's 
one of the libraries that are still in the closed parts of OpenJFX.

Is there a fallback? Pango doesn't work either it's not used in the android 
gradle scripts. 
I would be happy to integrate it and I am sure I can compile pango for android. 
I just need a pointer to how I can integrate it into the build process.
I changed android.gradle but I am not sure where to put the pango sources.



 How much time do you think it would take community designers to develop this?
 
 RoboVM for iOS I think is basically at this stage, where they've got 
 something up and running to the point of being able to do performance 
 analysis and looking for bugs. It has been a several month process with stops 
 and starts. Tom and the others working on RoboVM might be able to give a 
 better estimate.
 
 Does it support swing and javafx or just javafx like the Pi port? What parts 
 of java8 don't work on your standalone VM?
 
 I couldn't tell you what does / doesn't work on the standalone VM as that 
 would break all kinds of confidential legal mumbo-jumbo. But I can tell you 
 I've never seen a port of AWT to iOS or Android.




kind regards
Matthias




Re: JAVAFX on ANDROID

2013-10-14 Thread Matthias Hänel
Hi Stefan,


thanks for your fast answer.


Am 12.10.2013 um 00:47 schrieb Stefan Fuchs snfu...@gmx.de:

 I think you must |add the flag ||-PCOMPILE_PANGO=true to build the new 
 opensource font stuff.

I am sure that's not that easy ;)
Actually, I tried it but it didn't do anything in the first place.


 If I remember correctly I got a similar error, when I first build jfx78 on 
 linux.
 
 I made some experiments with javafx on android by myself.
 
 I found the following interesting read:
 http://stackoverflow.com/questions/7153989/java-7-language-features-with-android

Well, I didn't use jfx78 vanilla, I used it as a base for the port to java6.
I am quite sure that we need a java6 port on the long run to support davlik 
stable.


 One other problem I hit, when trying to compile a larger application was:
 http://stackoverflow.com/questions/15508477/android-my-application-is-too-large-and-gives-unable-to-execute-dex-method-id

Ok, interessting, I'll take a look at it when I hit the error.


 Apparently there is a limit of ||65536 methods per apk file.
 
 
 Besides, I'm currently two releases behind with the jfx78.
 
 I'll try to catch up soon.

It would be great to read your findings.


kind regards
Matthias





Re: JAVAFX on ANDROID

2013-10-14 Thread Matthias Hänel
Hi Felie,


thanks for you fast answer.


Am 12.10.2013 um 01:36 schrieb Felipe Heidrich felipe.heidr...@oracle.com:

 The 'native' font stack for Linux uses Pango (to handle complex text) and 
 freetype (rendering glyph images, outlines, metrics, etc).
 
 As long as we manage to build our freetype code on Android we should be able 
 to have something that works.
 
 As for pango, I heard it is not available on Android, but JavaFX should be 
 able to work without it (except that Arabic, Hebrew, Thai, Indic and other 
 complex scripts won't work).
 For the long run I would like to implement our glyph-layout code based on 
 Harfbuzz, which is would replace pango entirely and is available on Android.

As far as I can see freetype and pango are conntected to each other in the 
linux implementation. It's not yet possible to compile just freetype without
pango and the other way around.

Just an idea. Shouldn't it be possible to have javafx running by default when 
the font renderer is not working?
Most applications don't need a very fancy font renderer, many could rely on any 
software fallback. Don't you think so?


kind regards
Matthias





Re: JAVAFX on ANDROID

2013-10-14 Thread Matthias Hänel
Hi Tomas,


thanks for your fast answer.


Am 12.10.2013 um 14:04 schrieb Tomas Brandalik tomas.branda...@oracle.com:

 I think that PlatformLogger initialization in CssHelper was causing problems. 
 I had to write one.

I took the compat library fro robovm. I believe this should be sufficient. But 
the CssStyleHelper was still causing problems.

 Not 100% sure though I will look at it when I'm back in the office. (Or you 
 can comment out css processing in the node.) I was able to run without font 
 then.

Commenting out Css processing in the node is a good I idea which I tried 
yesterday but the I ran into other errors 
that will be caused by the same reason front is missing.

I would be great, I you could give me a direction for further investigation.


regards
Matthias






Re: JAVAFX on ANDROID

2013-10-14 Thread Matthias Hänel
Hey Niklas,


Am 13.10.2013 um 11:49 schrieb Niklas Therning nik...@therning.org:

 For PlatformLogger et al you can probably use the compatibility lib we have
 been using for jfx78+RoboVM: https://github.com/robovm/robovm-jfx78-compat

Hehe, yes I read it in Tobi's blog post that you wrote one that's why this is 
what I did in the first place ;)


regards
Matthias

Re: JAVAFX on ANDROID

2013-10-14 Thread Matthias Hänel
:49.759: WARN/System.err(1546): at 
com.sun.prism.impl.ps.BaseShaderContext.validatePaintOp(BaseShaderContext.java:485)
10-14 06:06:49.769: WARN/System.err(1546): at 
com.sun.prism.impl.ps.BaseShaderContext.validatePaintOp(BaseShaderContext.java:418)
10-14 06:06:49.769: WARN/System.err(1546): at 
com.sun.prism.impl.ps.BaseShaderContext.validatePaintOp(BaseShaderContext.java:351)
10-14 06:06:49.769: WARN/System.err(1546): at 
com.sun.prism.impl.BaseContext.validateClearOp(BaseContext.java:116)
10-14 06:06:49.769: WARN/System.err(1546): at 
com.sun.prism.es2.ES2Graphics.clear(ES2Graphics.java:78)
10-14 06:06:49.769: WARN/System.err(1546): at 
com.sun.javafx.tk.quantum.ViewPainter.doPaint(ViewPainter.java:460)
10-14 06:06:49.769: WARN/System.err(1546): at 
com.sun.javafx.tk.quantum.ViewPainter.paintImpl(ViewPainter.java:331)
10-14 06:06:49.779: WARN/System.err(1546): at 
com.sun.javafx.tk.quantum.PresentingPainter.run(PresentingPainter.java:88)
10-14 06:06:49.779: WARN/System.err(1546): at 
java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:390)
10-14 06:06:49.779: WARN/System.err(1546): at 
java.util.concurrent.FutureTask.runAndReset(FutureTask.java:276)
10-14 06:06:49.779: WARN/System.err(1546): at 
com.sun.javafx.tk.RenderJob.run(RenderJob.java:58)
10-14 06:06:49.779: WARN/System.err(1546): at 
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1080)
10-14 06:06:49.779: WARN/System.err(1546): at 
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:573)
10-14 06:06:49.779: WARN/System.err(1546): at 
com.sun.javafx.tk.quantum.QuantumRenderer$PipelineRunnable.run(QuantumRenderer.java:129)
10-14 06:06:49.779: WARN/System.err(1546): at 
java.lang.Thread.run(Thread.java:841)
10-14 06:06:49.779: INFO/GLASS(1546): glass_view_drawEnd


I track the error down to, compileShader in ES2Shader.java on line 130. This is 
returning 0 from native code. 
The native codes looks okay for me and the Android Simulator is supposed to 
emulate OpenGL ES 2.0 correclty, so I am not sure
why the compileShader returns 0...

int vertexShaderID = glCtx.compileShader(vert, true);
if (vertexShaderID == 0) {
throw new RuntimeException(Error creating vertex shader); //--- 
this Exception occours.
}

I know this is the common error from the shader compiler, but this should have 
worked for you, 
when you started your own application. Do you have a hint, what I could have 
been done wrong?

I assume right now that the native build is correctly, since it is called from 
java and it does 
return the correct EGLContext. This assumption might be wrong.


regards
Matthias




Am 12.10.2013 um 14:04 schrieb Tomas Brandalik tomas.branda...@oracle.com:

 I think that PlatformLogger initialization in CssHelper was causing problems. 
 I had to write one. Not 100% sure though I will look at it when I'm back in 
 the office. (Or you can comment out css processing in the node.) I was able 
 to run without font then.
 
 -Tomas
 
 
 On 10/11/2013 06:22 PM, Tom Schindl wrote:
 On 11.10.13 18:10, Matthias Hänel wrote:
 Hi Tomas,
 
 
 today, I took the time to investigate a little more time on this.
 
 1. I build an entirely new openjfx78 build for android
 2. starting this gave me several errors that lead me to the
 conclusion that I need a java6 openjfx
 3. based on openjfx78 I ported it back to java6 (adapted gradled scripts, 
 and tons of java source code)
 4. Now it's almost running on an 18th android. All libraries are firing up 
 until the CssStyleHelper
 is called with a static call to createStyleHelper.
 
 That looks like the font stuff is not in jfx78. That's why new Font 
 returns with null and therefore
 On OS-X font stuff is definately there in jfx78, but the low-level font
 stuff is loaded using reflection (at least this was the cause on robovm)!
 
 Tom
 



Re: JAVAFX on ANDROID

2013-10-14 Thread Matthias Hänel
Hi Tomas,


never mind, I found the problem over here in the simulator ;) I had to activate 
the GPU support.

So, now I had to BGRA image format for Android and now I get JFX up and running 
without fonts.

There are two things missing:
1. fonts- here we probably need to get pango working for Android right?
2. touch events - I saw that you have got a special Android proxy for the input 
stuff 
Java_com_oracle_dalvik_FXActivity_00024InternalSurfaceView_onTouchEventNative
This seems to crash for some reason. any idea? It's not that complicated but it 
is producing a stack trace.

After fixing the touch events Brickbreaker with Niklas' no-font-patch should 
work. I'd pleased to test this.


kind regards
Matthias



Am 14.10.2013 um 12:17 schrieb Matthias Hänel hae...@ultramixer.com:

 Hi Tomas,
 
 
 since Tobi told me he had a similiar problem in the first place with the iOS 
 port and he managed to run JFX8 without font.
 We deactivated fonts. There is some code to deactivate and after that it 
 looks like it is starting the JFX-Application.
 
 10-14 06:06:49.529: INFO/GLASS(1546): glass_view_drawBegin
 10-14 06:06:49.529: INFO/javafx(1546): Using getAndroidNativeWindow() from 
 glass.
 10-14 06:06:49.579: ERROR/libEGL(1546): called unimplemented OpenGL ES API
 10-14 06:06:49.579: ERROR/libEGL(1546): called unimplemented OpenGL ES API
 10-14 06:06:49.579: ERROR/libEGL(1546): called unimplemented OpenGL ES API
 10-14 06:06:49.579: ERROR/libEGL(1546): called unimplemented OpenGL ES API
 10-14 06:06:49.579: ERROR/javafx(1546): Some video driver error or 
 programming error occurred. Framebuffer object status is invalid. (FBO - 823)
 10-14 06:06:49.579: ERROR/libEGL(1546): called unimplemented OpenGL ES API
 10-14 06:06:49.579: ERROR/javafx(1546): Error creating framebuffer object 
 with TexID 1)
 10-14 06:06:49.599: ERROR/libEGL(1546): called unimplemented OpenGL ES API
 10-14 06:06:49.649: ERROR/libEGL(1546): called unimplemented OpenGL ES API
 10-14 06:06:49.649: ERROR/libEGL(1546): called unimplemented OpenGL ES API
 10-14 06:06:49.649: ERROR/libEGL(1546): called unimplemented OpenGL ES API
 10-14 06:06:49.649: ERROR/libEGL(1546): called unimplemented OpenGL ES API
 10-14 06:06:49.649: ERROR/libEGL(1546): called unimplemented OpenGL ES API
 10-14 06:06:49.649: ERROR/libEGL(1546): called unimplemented OpenGL ES API
 10-14 06:06:49.659: WARN/System.err(1546): 
 java.lang.reflect.InvocationTargetException
 10-14 06:06:49.669: WARN/System.err(1546): at 
 java.lang.reflect.Method.invokeNative(Native Method)
 10-14 06:06:49.669: WARN/System.err(1546): at 
 java.lang.reflect.Method.invoke(Method.java:525)
 10-14 06:06:49.709: DEBUG/dalvikvm(1546): GC_FOR_ALLOC freed 330K, 10% free 
 4129K/4564K, paused 32ms, total 32ms
 10-14 06:06:49.709: WARN/System.err(1546): at 
 com.sun.prism.es2.ES2ResourceFactory.createStockShader(ES2ResourceFactory.java:253)
 10-14 06:06:49.709: WARN/System.err(1546): at 
 com.sun.prism.impl.ps.BaseShaderContext.getPaintShader(BaseShaderContext.java:227)
 10-14 06:06:49.709: WARN/System.err(1546): at 
 com.sun.prism.impl.ps.BaseShaderContext.validatePaintOp(BaseShaderContext.java:485)
 10-14 06:06:49.709: WARN/System.err(1546): at 
 com.sun.prism.impl.ps.BaseShaderContext.validatePaintOp(BaseShaderContext.java:418)
 10-14 06:06:49.709: WARN/System.err(1546): at 
 com.sun.prism.impl.ps.BaseShaderContext.validatePaintOp(BaseShaderContext.java:351)
 10-14 06:06:49.709: WARN/System.err(1546): at 
 com.sun.prism.impl.BaseContext.validateClearOp(BaseContext.java:116)
 10-14 06:06:49.709: WARN/System.err(1546): at 
 com.sun.prism.es2.ES2Graphics.clear(ES2Graphics.java:78)
 10-14 06:06:49.719: WARN/System.err(1546): at 
 com.sun.javafx.tk.quantum.ViewPainter.doPaint(ViewPainter.java:460)
 10-14 06:06:49.719: WARN/System.err(1546): at 
 com.sun.javafx.tk.quantum.ViewPainter.paintImpl(ViewPainter.java:331)
 10-14 06:06:49.719: WARN/System.err(1546): at 
 com.sun.javafx.tk.quantum.PresentingPainter.run(PresentingPainter.java:88)
 10-14 06:06:49.719: WARN/System.err(1546): at 
 java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:390)
 10-14 06:06:49.729: WARN/System.err(1546): at 
 java.util.concurrent.FutureTask.runAndReset(FutureTask.java:276)
 10-14 06:06:49.729: WARN/System.err(1546): at 
 com.sun.javafx.tk.RenderJob.run(RenderJob.java:58)
 10-14 06:06:49.729: WARN/System.err(1546): at 
 java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1080)
 10-14 06:06:49.729: WARN/System.err(1546): at 
 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:573)
 10-14 06:06:49.729: WARN/System.err(1546): at 
 com.sun.javafx.tk.quantum.QuantumRenderer$PipelineRunnable.run(QuantumRenderer.java:129)
 10-14 06:06:49.729: WARN/System.err(1546): at 
 java.lang.Thread.run(Thread.java:841)
 10-14 06:06:49.729: WARN/System.err(1546): Caused by: 
 java.lang.RuntimeException: Error creating vertex shader
 10-14 06:06:49.740: WARN/System.err(1546

Re: JAVAFX on ANDROID

2013-10-14 Thread Matthias Hänel
Hi Tomas,


Am 14.10.2013 um 14:31 schrieb tomas.brandalik tomas.branda...@oracle.com:

 Hi Matthias,
 cool, I'm surprised you we're able to run it on emulator. I run on device not 
 on emulator for a long time. There wasn't  opengl extension 
 GL_EXT_texture_format_BGRA in emulator. But that could have changed 
 overtime.


well, this is probably not an coinsidence. I have seen your BGRA quirk, but 
this doesn't apply to Android actually.
I fixed it like someone fixed it for iOS:

public boolean isFormatSupported(PixelFormat format) {
GLFactory glFactory = ES2Pipeline.glFactory;
switch (format) {
case BYTE_RGB:
case BYTE_GRAY:
case BYTE_ALPHA:
case MULTI_YCbCr_420:
return true;
case BYTE_BGRA_PRE:
case INT_ARGB_PRE:
if (glFactory.isGL2() || PlatformUtil.isIOS() || 
PlatformUtil.isAndroid()) {


 Regarding events: yes there seems to be a problem which I haven't discovered. 
 I've pushed multitouch support and broke touch events on dalvik. I will fix 
 that soon.

It would be great, if you could pass the changes to me as well, since I have a 
backport (java6) from a backport(java7) running over here ;)
Otherwise, it could take a while.


 In order to replace t2k there is freetype library for fonts and glyphs access 
 and harfbuzz for layouting available among system libraries.  Although google 
 discourages to use them since they aren't part of public api. It can bring 
 all sorts of compatibility problems (harfbuzz implementation has changed in 
 recent android releases for example). Yes try pango if you have time to spare 
 and share results please.


Hhm, this sounds like quite some work. Pango would probably the fastest way to 
do. Do you know
where I have to place it?


regards
Matthias




Re: JAVAFX on ANDROID

2013-10-11 Thread Matthias Hänel
Hi Tomas,


today, I took the time to investigate a little more time on this. 

1. I build an entirely new openjfx78 build for android
2. starting this gave me several errors that lead me to the 
conclusion that I need a java6 openjfx
3. based on openjfx78 I ported it back to java6 (adapted gradled scripts, and 
tons of java source code)
4. Now it's almost running on an 18th android. All libraries are firing up 
until the CssStyleHelper 
is called with a static call to createStyleHelper.

That looks like the font stuff is not in jfx78. That's why new Font returns 
with null and therefore
CssStyleHelper crashes. Do you have any idea how to proceed? Do I really have 
to port JFX8 from Java8 
back to Java6 to get a full flegded JFX8 running on Android? That would be 
pretty heavy it took me
nearly 10 hours to port jfx78 to Java6 (without Ensemble). I am willing to 
contribute, in case we've got
a development direction.


kind regards
Matthias



Am 11.10.2013 um 07:51 schrieb Tobi t...@ultramixer.com:

 Is this standalone vim working with JIT? Does it works well?
 
 We recently tried to use the embedded version of oracle JdKs com Linux/ARMv7 
 soft float on Android but if doesn't work because if missing linked dylibs on 
 Android..,.
 
 
 Am 11.10.2013 um 06:52 schrieb Tomas Brandalik tomas.branda...@oracle.com:
 
 COMPILE_TARGETS=android
 Good, then use FX78 and you can give it a try. I have my local fork of 
 javafx for testing DalvikLauncher. Standalone Vm for Android is not 
 available for download.
 
 -Tomas
 
 FX78 should be compatible with Java6 because RoboVM is built on dalvik
 classlib and JavaFX works there!
 
 Tom
 
 On 10.10.13 22:42, Tobi wrote:
 Hi Tomas,
 
 How did you test the Dalviklauncher? Do you have a Java6 compatible jFX 
 version?
 
 And how did you test the JavaSELauncher? Do you have a JVM for android? 
 Where can we download it?
 
 Am 10.10.2013 um 22:01 schrieb Tomas 
 Brandaliktomas.branda...@oracle.com:
 
 Hi Tobi and Philippe,
 Android port is being developed in open source so all developers can see 
 every progress. There is nothing to hide. You can understand it as an 
 example of porting javafx runtime to a linux based platform not a product 
 with a roadmap.
 As you've noticed there are 2 launchers DalvikLauncher and 
 JavaSELauncher. Have a look at DalvikLauncher it is quite simple how it 
 launches an application. What you need to try it out is an java6 (dalvik 
 vm limitation)  compatible javafx fork.
 On the other hand JavaSELauncher uses standalone vm which is not part of 
 the port. It expects that the vm is packaged with an apk. The launcher 
 unpacks vm, installs it, setup classpath, main class debug port etc (all 
 specified in manifest) and launches it . These are the 2 options which 
 can be further extended by the community.
 
 best regards
 -Tomas
 
 On 10/10/2013 06:10 PM, Tobias Bley wrote:
 Tomas from Oracle is working on the Android port of JavaFX. He has 
 developed a DalvikLauncher and a JavaSELauncher. So he is able to tell 
 you (and me :)) more about that important theme „JavaFX on Android“.
 
 Best regards,
 Tobi
 
 
 Am 10.10.2013 um 16:55 schrieb Philippe 
 TIFFEAUphilippe.tiff...@steria.com:
 
 Hello,
 
 Someone can make a clear answer about JavaFX on ANDROID ?
 
 If it works how to use ? Otherwise the roadmap is 
 
 Best Regard.
 
 This email and any attachments may contain confidential information and 
 intellectual property (including copyright material). It is only for 
 the use of the addressee(s) in accordance with any instructions 
 contained within it. If you are not the addressee, you are prohibited 
 from copying, forwarding, disclosing, saving or otherwise using it in 
 any way. If you receive this email in error, please immediately advise 
 the sender and delete it. Steria may monitor the content of emails 
 within its network to ensure compliance with its policies and 
 procedures. Emails are susceptible to alteration and their integrity 
 (including origin) cannot be assured. Steria shall not be liable for 
 any modification to a message, or for messages falsely sent.
 



Re: Moving on to a round house kick (forked from Re: JavaOne roundup?)

2013-10-01 Thread Matthias Hänel
Hi Richard,



thank you for your fast answer. I know you are a bussy man.


 The longer I think about that, the longer I am getting angry to see a 100 
 men powered development 
 team to build a demo on a demo board for a hand full nerds.
 
 I don't know where you got that impression. Jasper did the design, and there 
 were a couple of people who spent a couple weeks working on software. And 
 that wasn't writing the DukePad software, predominantly, but it was fixing 
 performance issues in Prism that affect all platforms.
 
 The value is in embedded development. Before JavaOne we didn't have all the 
 agreements in place to work with Freescale. The Raspberry PI has a nice 
 following, is great for educational purposes and home-brew, so it was a great 
 choice to build a demo on top of (as opposed to, say, a BeagleBoard or 
 BeagleBone which is either more expensive or doesn't have the same size 
 following). Having an actual project to work on also teases out bugs and 
 performance issues, and most of the work leading up to JavaOne was in finding 
 and fixing these issues. These same issues will affect any embedded project, 
 including the RoboVM / iOS / Android work.

Why do you guys always talk about embedded development? The old days of 
embbedded stuff have been without an OS.
What we are talking about are not really embedded platforms, these are Desktop 
systems like Linux/Android (linux base)/iOS (berkley based) with
energy optimized kernels which are primary used on an ARM CPUs. From my point 
of view the summary of an ARM cpu, operating systems and toolkits build the 
platform.

Unfortunately, I missed the Freescale announcment. How could I miss it? (I used 
to work with their Motorola dev boards back in time)
http://gigaom.com/2013/09/23/oracle-and-freescale-push-java-for-the-internet-of-things/

I read this announcement and now I hopefully understand the idea where JavaFX 
should end up.
Oracle wants to establish a network of little running devices based on 
Linux/JavaFX build inside any electric device.
Now I understand everything much better.

off topic:
Nice idea, but keep in mind we have 2013 and it is the phase of consolidation 
in the software and OS market.
The costumer don't want a closed system. Just one question. 

You want to buy a fridge in late 2014 with a tablet interface on the front 
door. You are in a very big Target super market.
There you will find one with JavaFX powered logo and another one with Google 
Android. Which one do you buy?

What I want to say is, that as long as there are others using well known 
operating interfaces it will be very very hard to
enter this market. Sure there is always a chance to enter a new market but 
wouldn't it be smart to enter a currently 
used operating system and let the customer get used to a particular technology?


 Well that would be ok, if Oracle said that this is a demo
 on a prototyping board and the important platforms will follow soon. No word 
 about iOS, Android, Windows8. 
 
 Do you mean Windows Phone 8? Because Windows 8 is a given.

Yes, I meant Windows Phone 8. Sure, this is currently not a major player in my 
opinion it has a much broader audiance 
and end-user acceptance than a linux based system.



 Do you really believe that there are many people to build a Tablet like 
 this? I am really sure non of the major 
 hardware manufacturer will build a tablet on top of this platform soon since 
 Android is also free to us and is 
 much more attractive to the end-user. The only thing that I can image is 
 that Oracle comes up with their own
 iPad-Killer in the near future (don't wait too long) otherwise this decision 
 make no sense to me.
 
 No, none of this. DukePad is not a product. We made that pretty clear, it's 
 an open source hardware/software design for the Raspberry PI community. We 
 will make no money off the designs and Oracle isn't selling anything here. 
 For us it was a vehicle on which we could demonstrate our ability to run well 
 on embedded devices, and find and fix bugs along the way. Oracle isn't going 
 to produce a mobile device. DukePad was not any kind of product announcement. 
 Those kinds of things happen in strategy keynotes, not in technical keynotes.

Ok, the rasp-pi stuff is done for demonstration purposes and as a development 
platform. I see. The direction is clearly
enriched internet things. That means for me it is the end of my hopes for 
JavaFX as a game changer
on every platform. Thanks for enlighten me, this makes our future decisions a 
bit easier. 


kind regards
Matthias




Re: Moving on to a round house kick (forked from Re: JavaOne roundup?)

2013-09-30 Thread Matthias Hänel
Hi,


@Felix: you are kidding are you? We cannot take another breath without choking 
on it. Sure there
are many positive things about JavaFX but in the real world I can't be happy 
over and over again about 
the same things. A university can just devlop until a certain point, but we 
have a running bussiness
where we need to decide the future of the underlaying technology.

This is my very first post to this mailing list. My collegue tobi is an active 
member of this community.
He is head of the java devlopement department in our company and I am the 
counterpart by managing the 
backend native codes and the interfacing to JNI/Java for the upper layers. 
Since Javafx could be a game changer for our company we have had internal 
workshops for the developers 
to get a common sense about the furture of development directions. This summer 
we focused our development
on JavaFX for further products. This meant reworking all UI-stuff, cleaning 
APIs and fixing JNI for java8.

Tobi was soo excited to see the new technologies and his presentation to our 
fellow developers has been
more than ethusiastic. It sounded almost like the old dream 
code-once-run-anywhere comes true. The closer 
JavaOne got and the more session of interest for us has been canceled, the more 
we got fed up over here.
As a result non of the session that had been a sort of interest for us had been 
held. Just to summarize
our feeling about that, we are taking this really personally. There is 
investment of money and time on 
one side and on the other side it is personal investment into a future 
technology.


I would like to give you an overview of the things that happend and how they 
appear over here.

What did we heard over here from JavaOne?

1. JavaFX is still in development
2. Dukepad is released
3. Oracle wong a sailing cup
(4. Javafx runs in a browser)


I'll start at the bottom:

(4. When Javafx runs in a browser, why do I need it? I could use JavaScript and 
web technologies as well.
This is quite a failure of time investment. Sure write-once-run-anywhere 
applies but all tough real world 
applications are not buildable since there is no native interfacing and won't 
be cross platform in the near future.)

3. Larry Ellison spent 200 million dollar to win a sailing cup. 
I don't want to image what Oracle could have been done to revolutionize the 
world. I don't speak only about JavaFX,
there is a lot to be done with the right power. But doesn't lead to much here.

2. Wow, there is a JavaFX enabled Dukepad. Beeing a soldering nerd myself, 
hacking firmware and much cool stuff
in my spare time it really kicked me in the first place. Then I grounded when I 
have seen that it was a childish puzzle
with lego blocks. The longer I think about that, the longer I am getting angry 
to see a 100 men powered development 
team to build a demo on a demo board for a hand full nerds. Well that would be 
ok, if Oracle said that this is a demo
on a prototyping board and the important platforms will follow soon. No word 
about iOS, Android, Windows8. 
Do you really believe that there are many people to build a Tablet like this? I 
am really sure non of the major 
hardware manufacturer will build a tablet on top of this platform soon since 
Android is also free to us and is 
much more attractive to the end-user. The only thing that I can image is that 
Oracle comes up with their own
iPad-Killer in the near future (don't wait too long) otherwise this decision 
make no sense to me.

1. JavaFX is in active development is the only great news for me. As of today 
it looks like a major development for
years that is not released for actual use. For me it is currently just a very 
big shiny demo. 

short history summarize:

4 years ago when javafx1 hit's the world, desktop use was okay. JavaFX1 
couldn't really convince due to an strange way
of design. It is okay to make an mistake and to learn from it, so JavaFX2 was 
create. The software design is outstanding
and the potential is not even comparable from my point of view. Well, it was 
already time to look at the other platforms.
2012 it was announced (but canceled) to run on iOS/Android and now 2013 it was 
announced again (but canceled).
From our current point of view it looks like we just have to use the already 
developed parts on desktop and for mobile 
we will have to start a complete new development branch. This will work for a 
short time but in the long term we'll
probably step back from JavaFX and even Java and develop our own abstraction 
layer. This is sad and costs a lot of time
that we would need to build our real products.


To make it clear. Everytime I read arm-build I think there is further 
development in the right direction, but wrong
it's still the same linux-arm-build. We don't need an arm build for javafx. We 
need an iOS-build, an Android-build 
and a Windows-build for the jre and javafx. Don't get me wrong you can 
prototype where ever you want even on Pi, but