Opened 11 years ago

Last modified 3 weeks ago

#2416 assigned bug

[Interface kit] Resizing tracker window flickers address bar

Reported by: diver Owned by: nobody
Priority: normal Milestone: R1
Component: Kits/Interface Kit Version: R1/Development
Keywords: Cc: stippi
Blocked By: Blocking: #11803
Has a Patch: no Platform: All

Description


Change History (12)

comment:1 Changed 11 years ago by idefix

Not only the address bar flickers, but every element that moves or resizes: address bar, folder icon (upper-right corner), item count (lower-left corner) and yellow tab (if the window is too small to show the whole tab). Only the scrollbars (except for some 1 pixel lines), window borders and resize grip don't flicker.

comment:2 Changed 11 years ago by idefix

Forgot to mention: the menu bar (if the window is too small to show the whole menu bar).

comment:3 in reply to:  1 Changed 11 years ago by diver

Replying to idefix:

Not only the address bar flickers, but every element that moves or resizes: address bar, folder icon (upper-right corner), item count (lower-left corner) and yellow tab (if the window is too small to show the whole tab). Only the scrollbars (except for some 1 pixel lines), window borders and resize grip don't flicker.

That's right.

comment:4 Changed 9 years ago by diver

Still here in hrev35141

comment:5 Changed 9 years ago by diver

Version: R1/pre-alpha1R1/Development

comment:6 Changed 8 years ago by diver

Still reproducible in VirtualBox with hrev38300.

comment:7 Changed 4 years ago by humdinger

Blocking: 11803 added

comment:8 Changed 22 months ago by axeld

Owner: changed from axeld to nobody
Status: newassigned

comment:9 Changed 3 weeks ago by diver

Cc: stippi added

Qt also had this problem years ago but they fixed it http://blog.qt.io/blog/2007/08/09/qt-invaded-by-aliens-the-end-of-all-flicker/

I also remember that SkyOS was flicker free due to window compoziting https://web.archive.org/web/20060813061351/http://www.skyos.org:80/?q=node/508

I wonder if buffered windows that stippi mentioned recently on IRC could fix this issue? Stippi?

comment:10 Changed 3 weeks ago by diver

On the other hand not all widgets flicker during window resize, I wonder why is that.

comment:11 Changed 3 weeks ago by stippi

Normal drawing updates in Haiku are actually flicker free. When windows are resized however, there are two mechanisms: The widgets get a new size, and are requested to draw. When the widget has a background color set, the app_server will pre-fill the exposed areas with that color. Widgets can set a transparent view color to prevent that from happening. In addition, some widgets request to be redrawn in full when they are resized. Perhaps the process could be more optimized to prevent flickering, but when it happens, it is due to these circumstances. The combination full update + non-transparent view color should be the one that leads to flickering.

comment:12 Changed 3 weeks ago by stippi

... perhaps it is not yet clear why flickering actually happens. The crucial bit is how screen updates are synchronized. I think for normal drawing updates, the app_server will delay a screen update until the view is finished drawing, even when the view has a non-transparent view color and the app_server pre-fillied before drawing. During resizing, there is less synchronization and the app_server won't delay screen updates until all views in a window have actually finished drawing. Then it depends on how much the app_server has pre-filled and how much the view managed to draw when the screen update happens.

Note: See TracTickets for help on using tickets.