Project Home
Project Home
Documents
Documents
Wiki
Wiki
Discussion Forums
Discussions
Project Information
Project Info
Forum Topic - Using KD_WINDOWPROPERTY_FREEZE_QNX with patch 1.5.15.2856 in Foundry27: (6 Items)
   
Using KD_WINDOWPROPERTY_FREEZE_QNX with patch 1.5.15.2856 in Foundry27  
Hello,

The customer is trying to implement a smooth scrolling algorithm where they need to swap buffers and change window 
properties such as KD_WINDOWPROPERTY_SOURCE_POSITION_QNX in one step without intermediate states becoming visible on the
 display (basically they want the algo to be atomic). To that end, they began testing and ran into an issue that can be 
distilled into the test case below.

They use the following steps in a test program (ie. gles1-kd-gears) in a loop:

1) Render something
2) Call kdSetWindowPropertybv(window, KD_WINDOWPROPERTY_FREEZE_QNX, true)
3) Call eglSwapBuffers()
4) Call kdSetWindowPropertybv(window, KD_WINDOWPROPERTY_FREEZE_QNX, false)

The first iteration of the loop behaves as expected (the display stays black), but any subsequent iteration 
eglSwapBuffers() doesn't return, and the process becomes unresponsive.


My first question, is it correct to use the freeze property in the way described above?
Second, since this is a patch on F27, is the freeze property fully implemented in the patch?
Third, do we have any other (better) mechanisms they could use to implement their smooth scrolling?

My apologies if this is already documented somewhere and I missed the obvious.

Thanks
RE: Using KD_WINDOWPROPERTY_FREEZE_QNX with patch 1.5.15.2856 in Foundry27  
With that version of CM it's not possible to atomically update window properties with a post.

-Joel

-----Original Message-----
From: Gervais Mulongoy [mailto:community-noreply@qnx.com]
Sent: Thu 8/26/2010 3:45 PM
To: cwm-graphics
Subject: Using KD_WINDOWPROPERTY_FREEZE_QNX with patch 1.5.15.2856 in Foundry27
 
Hello,

The customer is trying to implement a smooth scrolling algorithm where they need to swap buffers and change window 
properties such as KD_WINDOWPROPERTY_SOURCE_POSITION_QNX in one step without intermediate states becoming visible on the
 display (basically they want the algo to be atomic). To that end, they began testing and ran into an issue that can be 
distilled into the test case below.

They use the following steps in a test program (ie. gles1-kd-gears) in a loop:

1) Render something
2) Call kdSetWindowPropertybv(window, KD_WINDOWPROPERTY_FREEZE_QNX, true)
3) Call eglSwapBuffers()
4) Call kdSetWindowPropertybv(window, KD_WINDOWPROPERTY_FREEZE_QNX, false)

The first iteration of the loop behaves as expected (the display stays black), but any subsequent iteration 
eglSwapBuffers() doesn't return, and the process becomes unresponsive.


My first question, is it correct to use the freeze property in the way described above?
Second, since this is a patch on F27, is the freeze property fully implemented in the patch?
Third, do we have any other (better) mechanisms they could use to implement their smooth scrolling?

My apologies if this is already documented somewhere and I missed the obvious.

Thanks



_______________________________________________

CWM/OpenKODE
http://community.qnx.com/sf/go/post64676


Re: RE: Using KD_WINDOWPROPERTY_FREEZE_QNX with patch 1.5.15.2856 in Foundry27  
For sake of having this written down, what exactly does that freeze property do and why does it cause this issue when 
used with eglSwapBuffers()?
Re: RE: Using KD_WINDOWPROPERTY_FREEZE_QNX with patch 1.5.15.2856 in Foundry27  
RE: Using KD_WINDOWPROPERTY_FREEZE_QNX with patch 1.5.15.2856 in Foundry27  
The freeze property suspends the handling of posts from a window.
Therefore, eglSwapBuffers will block when it runs out of buffers. After
the first post, the client only has 1 buffer, so setting a freeze will
cause eglSwapBuffers to block until the freeze is removed. The property
was added as a big hammer for delegates that want to stop apps from
updating. Not as a way of getting atomic operations. We implemented some
form of atomic operations, probably on a different branch.

-Etienne Belanger 

-----Original Message-----
From: Gervais Mulongoy [mailto:community-noreply@qnx.com] 
Sent: August 26, 2010 3:45 PM
To: cwm-graphics
Subject: Using KD_WINDOWPROPERTY_FREEZE_QNX with patch 1.5.15.2856 in
Foundry27

Hello,

The customer is trying to implement a smooth scrolling algorithm where
they need to swap buffers and change window properties such as
KD_WINDOWPROPERTY_SOURCE_POSITION_QNX in one step without intermediate
states becoming visible on the display (basically they want the algo to
be atomic). To that end, they began testing and ran into an issue that
can be distilled into the test case below.

They use the following steps in a test program (ie. gles1-kd-gears) in a
loop:

1) Render something
2) Call kdSetWindowPropertybv(window, KD_WINDOWPROPERTY_FREEZE_QNX,
true)
3) Call eglSwapBuffers()
4) Call kdSetWindowPropertybv(window, KD_WINDOWPROPERTY_FREEZE_QNX,
false)

The first iteration of the loop behaves as expected (the display stays
black), but any subsequent iteration eglSwapBuffers() doesn't return,
and the process becomes unresponsive.


My first question, is it correct to use the freeze property in the way
described above?
Second, since this is a patch on F27, is the freeze property fully
implemented in the patch?
Third, do we have any other (better) mechanisms they could use to
implement their smooth scrolling?

My apologies if this is already documented somewhere and I missed the
obvious.

Thanks



_______________________________________________

CWM/OpenKODE
http://community.qnx.com/sf/go/post64676
Re: Using KD_WINDOWPROPERTY_FREEZE_QNX with patch 1.5.15.2856 in Foundry27  
  Thank you for the description.