Ghost panels again
-
@ustk Welcome again mate, I hope there is no break anymore :)
-
Welcome back Greg and yes, let's get this sorted.
@d-healey I think your example hasn't anything to do with ghost panels - it's just that you need to preload any image resource that you want to use in a child panel.
If I load the image in the
onInit
callback it works without issues and I wouldn't call this a deal breaking bug, just a minor glitch that you should be able to work around (but you've probably did something similar).If someone can make another example that reproduces the issue (or post a link to it if it got buried somewhere) I'll take a look.
-
@Christoph-Hart Pretty sure I'm preloading the images in my example. I'll dig out again and check.
-
@Christoph-Hart @orange Thanks Mates !
well the biggest problem is that I can't reproduce it consistently, you can run it a quite many times before it throws the issue
Though I can say it happens both in Hise and the exported appI can share the project if you want, but I have either to modify it (because I use a modified version of Hise with some APIs) or provide you with Hise directly (you need audio inputs enabled to use my app), so I assume you need a debug version ?
I will also work on a snippet that could reproduce the bug, but I quasi sure the panel thing has to be complex enough to see the bug arriving…
-
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.