Situations is : let's say we run something in a window on the workbench. It doesn't matter what exactly : be it sdl apps, or pure amigaos-native-api with pure usage of graphics.library functions only, the matter that we run something which not only static, but have some movements.

Now, when we by left mouse button grab any icon on workbench screen, and hold the mouse button, everything else on screen freezes. Music didn't blocked through, but everything else is freezes, until i didn't realize mouse button.

Question is: is it priorities issues, or it design flaw ? I mean, what the problem to move icon over the screen without blocking everything ? Or it is possible, and there is some option in the WB setttings ?

It happens because of the way icon dragging (moving the icons sprite like (actually bobs) over the screen) is done by Workbench. It locks all the layers on the screen so that it can draw directly into screen bitmap and the locks prevent other apps from rendering at the same time to prevent gfx trashes.

Theoretically icon dragging could be handled differently by Workbench by doing it like in other OSes where they put the icons in a irregular shaped window (or alpha shaped window with compositing enabled) and move that around. This needs a lot more cpu/gfx power so on things like Classic Amigas would be unusable slow.

Or Workbench could optionally simply not do the LockLayers()/UnlockLayers() calls and user would have to live with small gfx trashes every once and then. There are tricks to repair some of the gfx trashes after dragging is done. Partly automatically, partly by user.

Re: Is there a way to avoid blocking of everything else, when hold the LMB over icon on WB ?

Any program that renders to the screen will be blocked. Anything from fancy graphics to a simple printf() into a console window.My MIDI player runs as two separate tasks. the actual player has no GUI, no window, no interface with Intuition at all. The "visual" part still locks on mouse buttons, but updates correctly as soon as it can. I use MIDI messaging between the two to keep them in synch. It seemed the easiest way to go.