Progress Dialog for Slow Blocking Operations [Proposal]

Instead of a timer i would prefer if there was some information about the type of processing that is done and amount of data processed. Even if some of it might flash too fast to read, what is important is that the user understands that Blender is working and not stuck in an infinite loop.

As a top message, something like “Blender is working. Please give it a few seconds!” would be enough.

After a preset number of seconds passes without a result, the message might change to “Blender is still working. You might need to wait more than a few seconds!

2 Likes

I understand the desire for a large popup since the the entire UI is affected. But I wonder if we’d get a similar amount of notification with a smaller message while also adding some (probably small) amount of vignetting around the window edge. The vignetting might look like “all of this is affected” and it would also draw your eye to the center for the reason. The combination would not look similar to any of the other dialogs or popups.

Also wondering if it would be possible to do this without regions. So instead of redrawing the GPU buffers of all the regions with this region on top we could redraw a single capture and then this with just immediate calls. Then we could use this method during file loading. And might work better if the window is resized during this time.

9 Likes

Sounds like it could work. The vignetting would have to be strong enough so that the user notices the change when the vignette disappears while concentrating their other monitor.

1 Like

Make the vignette have red tint, like in games when you receive damage :slight_smile:

11 Likes

Sounds fine to me.

Here is a comparison between the grayed out Blender with the Windows hack I discribed above and the normal Blender dark theme which I know works very good because I use it all the time.

The difference is quite strong but I think it has to be. If you are concentrating on something else and only see the Blender window in the corner of the eye on your other screen it requires quite a strong contrast when switching for you to notice it.


For what it’s worth, that full-screen grey appearance is exactly what it looks like when blender has become unresponsive and is crashing on me.

So if the goal is informing it hasn’t crashed, I think the original pop-up is better.

3 Likes

I’d vote for simplicity that can be built on (e.g. make it a window, make it easy to extend with logging in the future) over anything stylish and less extensible.

Rendering it as an in-window pop-up, and immediately diving into things like vignettes and UI blocking, is a brittle approach. It’s stuff that looks good in Figma, but does not feel good in practice.

3 Likes

Yes, I have already “called dibs” on red, white, and multicolor window edge decorating. LOL

1 Like

I want to share my story as a user of Blender. I am not a developer.

I frequently ask Blender to do something and it hangs then crashes, or my whole computer hangs long enough that I choose to reboot. This is my fault. I would like to be told that what I am asking is dumb, why it is so and suggestions on how to avoid it in the future, and be given the choice to abort or continue.

GIMP does this for some things. It will tell me that an action will consume XX gigabytes of RAM and would I like to continue? I appreciate that feature.

1 Like

Not sure where this conversation is at, but I’d like to bring up a couple of points:

  • As stated in the original post: Blender should be as responsive and interactive as possible. This is a lot of work, but it’s worth it. Please use dialogs responsibly :slight_smile:
  • Consider using the mouse cursor to communicate blocking activity
  • Undo blocking operations with Esc
9 Likes

Make the vignette have red tint, like in games when you receive damage :slight_smile:

As a gamer I would feel like Blender is attacking me! :laughing:

From my perspective there are only a handful of operations that can be tracked to immediately freezing the system due to overload. One of the most prominent for me being Subdivision for a mesh that is already too dense or has too many triangles.
The other one that has been introduced since Blender 4.2 is initial freezing when compiling shaders for EEVEE preview. The latter one, by default, throwing two response warning from Windows asking me if I want to kill the program. I know this is a false positive from Windows side but I have many colleagues who were (and still are) very much irritated by that.

For the subdivision I’m not sure what the best approach is, though. Maya pops up a dialog that says something like: “hey! You want to subdivide a lot of polys here want me to progress?”
But I always found that a bit too intrusive. I like the heads up but this is one of these instances of too many blockers. And that behaviour just doesn’t fit Blender, IMO. :face_with_diagonal_mouth:
Any blocker that only throws a warning in the footer is visible but only semi-useful. It either blocks but doesn’t offer a way to proceed quickly or it wanrs you but still goes ahead with a potential freeze.

1 Like

I experimented with this a bit more in #139046 - WIP: Core: blocking computation progress information - blender - Blender Projects.

I’m using a combination of drawing something in the status bar and an optional dialog now. The dialog only shows when the user clicks on the thing in the status bar.

Implementation note: it’s not actually drawing this as part of the status bar, but just on top of the cached region texture buffers. This also explains why some UI elements disappear, those are not cached in the region buffers.

Here is how it looks like currently, obviously there is lots of missing stuff and it still looks quite ugly, but I think it gets the general idea across:

20 Likes

I love it! This is just going the be so freaking nice! Great job! :partying_face:

Please, consider including some api add-on/py dependency installation wait options in the UI.

1 Like