Ghost panels again
-
Ok it was in this post - https://forum.hise.audio/topic/5706/beta-test-finally-i-have-a-new-product-almost/90?_=1669329860943
I think it is a preload issue in this case. Although I am loading the image before attempting to draw it, the draw happens at the same time as the load.
So I'm in the same position as Greg that I can't reliably recreate the issue. It just happens sometimes.
-
@Christoph-Hart Alright, I created a simple snippet that consistently gives ghost panels.
But you've got to be patient sometimes, or even recompile before seeing one...
As you can see, sometimes it happens in series (but not always)HiseSnippet 1712.3ocsX0saaaCEVNIpq1cdXcXW1KHLFPkWbckaSxBPV1bhSbmwRZLhS6FPQQAiDsMQjIEjniiWQtrX2s8JrGs8Hr2frygTxV9mTLDrJrEXd34muyujrsijdr3XYjUt7mMNjYk6ys6LVn52nOkKrZcfUtGZ+h9xXUapfEb.67g8r1ebHMNl4akK2pu.YKW90rze+yOtOMfJ7XSIYY8ZI2icDe.WMkZ65+LOHnI0mcFePFt2ndKOongLPNDfzp1tVgTuKn8XujhrshsUt6cnOWIi5nnJVrUt01W5OtSe4Hgg+Wyi4mGvvE0r5.JxPtoLvGQLR0pQedfe6TWO1BzR6oAhUMAhu19XtOeB8oAjuTuAYpDYiG4VYV3s5LvqVV34lAdKAR4x.o0LP5g1c7h3gpo6f34A1sDJVTWJD1yBECuVqTJucCoHVFvp5EvnQNk2oXAfhhITUGPuf0LBVLQGN0bccqP110E4qXAHeDqHWRiH5RfZjcIoB2ioZHGDJEvBmRlsKgRY9YUephVMRNJFj4MucmTxwLf69Ldu9pRUHfYJjwHGQO+iYDy1fQJX9kQYJ1UnpJ0Hf6cAgR7vnIQIIwLFQ0mz5fRyZk.tf8SZD.V54t.jK7zmRZ.gGAIh0kEwfh3XBUQ3BthLpOCo6A3fCh1iDqisvlwJF0mH6RdUqpUqVfKPMS5NT3o3RTlAxKYGPE8Pwz9erS4BuuP9txHGCL4hjHq1U00A3xi3wJmxkKjOulspFUA4pAsoQXr.7nqKrbC.9ZwLQ61Poq5T4PEfMmTr4zSiidU6Bch6ED33dUylan+vT30FkLuCMLDRpLmxEK79hEHv2Ryoym+qFvD8f7v2lIviFAUf4uAROZ.YLjMbmg9xBSSTaYCOIHA+LgJMXFC3XbpQvuwj02Mi8S14ZvUgr+BNJ02uib.6XYDSmSfPtCXyzbGwguq6N7u+YarCe80grDPNuwILvcWBvcUPKSynXdIe9IITLwHi45bQsMbIqSd9lPDhWg7L3+1B+es.Y7IZPfbTC3umCSEimTwGSNQDLtzhp+1x640vEx8wXyENrEx9arQylatYylZ0jTWbJyS4n5yiwZyiP2ae4PgeriaYMaWufMOVNLlkBwoFkcITxBFVmuP8y6ZnAyj.Of4ifxfp7KoyFgP4cHPO5XFsOrjpdbL4bn067gJBfsV9NkI9RVr3wP6pL5BraDz00ofD9AztrXAsWDCJnOUNJSMsIOFB4vjJtERiYp7mVjCSCXQJGX3YXBKF0ENSpF1N.ZsWVKQkLCB9EtupuS4JKoiI7ikaWnk.G2QwAvfgcMQxYzeJAiMfn3SH0dal1lEKRvuxyvgeDcjtTgVgTq77B2ThStO4pw8XBHWVaqptkuUCr81KZ.5abeK17VyMCw4s+dA7dBl+YPAithsBA.So.VWEzXjv80oZU+mk0hGlxQ5ftcRlOjYbJdkknEKw0iFxVOsiYH5BkbRw9CUJonFdDWjLvwK87sJP1JXHC0DhAnGIYcpqlBBEMx.C7z5jhMXxOaQFkgF9PzrSgkenZBbJU1jIzfZh+MOZ0tzc4qXgLQfWJUrSRhYPeIY9s51co6kfg.zgVx1It5sKniX3fyYQYhyZFgaXM601ru8qsk8VkdlvYFFkhVvEFNIjIts6ZZkjCfe8pVG.COv65kPC3KDFgvQHj6.1kvEmM27Ku8Ar3KfjIn0IINqbelRu6WkbuPl+q4rQgxHkE2GuXX5xZVWk8F4imtnU8X5krVh1QLH2iWabDNXXBC0+y5lS0mPI72qi3cdLTL8toXgm17221TDdq11xZVa8W+wTacuTVB0W1Ii8x5UVYneeCN9hDbXJZ0.IucREbVj7M0Gmcw7QA7bG8igNauSO6ocN6j1yA15eX9.i0OTOKddvrwE8gZIwEyAbYPye+gYQyrlhDsDSwf5UptjLErOx91u9qUWn.qC+2x7TqspqooFi53dPAefu048Re5U96cyM27Hya0V3cHvKfj9CCnpYeVD9VvjMfltYdKB95BAb.33ruU7+s2J8eEhOztMW40e4XbkkfQn07SAFSdgYQ6C61EN0bJ.Wyt4u9o44jVlqJz6XpJhCEd1ub3fNPl1CN5iJvWM.zxsBNdxr1EWiQfNLgudATPbSxl0v04R1rV5lVCndQx24YF0hug89ZJ.lD5mum29XbMolkd7KHmsaUWqAvyoemmG59OA5oWtLO6NHyyuCxrwcPlMuCxr0cPlu6NHy1eTYv+kL1anRNvzN.DZen9Lob4NTfiWzUgV+KLBT0yE
-
@ustk What amount of patience is required here? I've looked at it for about two minutes and no ghost panels appeared (also with recompiling).
Also your snippet doesn't have the clear button, maybe you've pasted an older version?
-
@Christoph-Hart I was almost sure it wouldn't work on your side
No the one you have is the good one, in fact nothing changed except this clear btn which has nothing to do...
I do recompile often, because sometimes it just doesn't want to throw a ghost. Also it is apparently not related to the number of children you decide to create (so probably not a cluttering thingy) because I tried with 300 sub children per row with no more statistics...
Could it be more prone to make a ghost on slower computers ? Or a CPU thing ? I guess not because one of my beta tester had the issue on an M1...
I have nothing more to add than "try more", because I can't get a way of increasing the stats.
I tried to make a button that force repaints everything (all parents and children) to see if the ghost repaints, but no. When a ghost is a ghost, it stays a ghost :)
I also tried to check for doublons but it appears ghosts aren't doublons either
So, could it be that the paint routine isn't attached to it ? because the mouseCB is working (click a ghost and you get the ID)
I reckon I asked this a while ago => we don't see the children appearing in the scriptWatchTable, that would allow to check if a paint routine is attached, but I don't know if this is a difficult task... -
@Christoph-Hart I've been lucky here, 3 times I got some ghosts...
-
@ustk I'm not getting any, but I'll keep trying. Are you using open GL? Clicking on a child gives an error btw. Are you using the latest develop branch?
-
@Christoph-Hart Youhou!!! I can get as many as I want by stressing the CPU using this method :
-
@ustk :D progress!
-
@d-healey yes a recent develop, from around the faust implementation
Yes OpenGL is enabled, I'll try without... -
@d-healey Disabling OpenGL doesn't help
-
@ustk that yes trick is terrible, I like it!
I also get a few ghosts now.
-
@Christoph-Hart Welcome to the ghost world
-
@ustk I think I've narrowed it down to something. The paint routine gets assigned after the glue object between scripting layer and UI is initialised but at the time
setPaintRoutine
is called, the initialization is completed and the UI component assumes that there is no paint function.I'll do some more tests, but it seems to be fixable.
-
-
@ustk Alright, I've pushed a fix for it. the panel should now notify the UI component when a paint routine is assigned even after the initialization.
With the terminal trick and your snippets I don't get any ghost panels anymore. This was the only issue there, right?
-
@Christoph-Hart I don't see the commit.
-
@d-healey yeah big brain here forgot to push...
-
@Christoph-Hart said in Ghost panels again:
@d-healey yeah big brain here forgot to push...
Thank you, I'll try it out with Greg's snippet.
-
@Christoph-Hart Awesome ! I'll try that out tomorrow, the compile time on my mac is about 20min against the previous 7min from a few months back...
Yes that was the only thing :) -
@ustk Hmm, that's weird, but I also noticed that the Link time optimization steps takes a bit longer than before. I've updated the asmjit library which has now a few more translation units and of course there are 3 new modules with Faust, but 20 minutes seems very unreasonable (the entire CI script that builds HISE and a test project takes 7 minutes on my M1).
You might get away with disabling Link time optimization in the HISE projucer project if you're regularly recompiling HISE. It will run a little bit slower (and the binary might be a little bit bigger), but for development it should be fast enough.