[haiku-bugs] [Haiku] #9884: B_FULL_UPDATE_ON_RESIZE doesn't call Draw() intermittedly

  • From: "jscipione" <trac@xxxxxxxxxxxx>
  • Date: Fri, 19 Jul 2013 16:40:57 -0000

#9884: B_FULL_UPDATE_ON_RESIZE doesn't call Draw() intermittedly
--------------------------------+---------------------------
 Reporter:  jscipione           |        Owner:  axeld
     Type:  bug                 |       Status:  new
 Priority:  normal              |    Milestone:  R1
Component:  Servers/app_server  |      Version:  R1/alpha4.1
 Keywords:                      |   Blocked By:
 Blocking:                      |  Has a Patch:  0
 Platform:  All                 |
--------------------------------+---------------------------
 Experienced this issue in DeskCalc with B_FULL_UPDATE_ON_RESIZE and
 B_FRAME_EVENTS view flags and B_FOLLOW_ALL_SIDES for the resizing mode
 flag of the view. When you resize the window App Server calls
 FrameResized() but occasionally doesn't call Draw() afterwords. In
 DeskCalc this is worked around by calling Invalidate() at the end of
 FrameResized() but that shouldn't be needed.

 I've attached a test program to this ticket that you can see the issue
 more clearly. Build it with:

 {{{
 gcc -lbe -o resizetest resizetest.cpp
 }}}

 Then run the program from terminal like this to see the output:

 {{{
 ./resizetest
 }}}

 I've tested this program on both BeOS R5 and Haiku and both OS's seem to
 experience this issue but it happens much more often on Haiku.

 The view starts off green. On R5 as you resize the view it flashes red
 then settles on blue (iow Draw() then FrameResized() get called) while on
 Haiku it flashes blue then settles on red (iow FrameResized() then Draw()
 get called). While this is different between the two OS's I don't think
 it's a problem, I just wanted to point out the difference in case it helps
 to track down the bug.

 The real problem is that when you're done resizing the window occasionally
 the view will end up blue on Haiku because Draw() never got called. This
 is a little bit tough to do with the test program but is very easy to pull
 off on DeskCalc. If you look at the output of the program in Terminal
 though it shows what is happening: FrameResized() gets called several
 times with no corresponding Draw().

 This might be related to #7010.

--
Ticket URL: <http://dev.haiku-os.org/ticket/9884>
Haiku <http://dev.haiku-os.org>
Haiku - the operating system.

Other related posts: