This site is no longer active and is available for archival purposes only. Registration and login is disabled.

symbian 3.6 release and vertical tearing


symbian 3.6 release and vertical tearing

Postby ten foot ninja » May 22, 2006 @ 6:34am

ten foot ninja
pm Member
 
Posts: 19
Joined: Nov 6, 2005 @ 11:21pm


Postby Johan » May 23, 2006 @ 11:11am

Hi!

I'm glad you like the new release. :-) Yes, updating the display after a Flip is now asynchronous, simply for maximum compliance to deal with incoming phone calls etc. GapiDraw should now behave better than ever together with other applications on Series 60 phones! The drawback is that as you said that flipping might not be as "instant" as it was before.

Regarding tearing, we use Symbian's own routines for the final blit to the display, and try to prevent tearing as much as possible. However on some devices this tearing might be more visible than others, unfortunately it's not something we can change easily.

//Johan
Johan Sanneblad, M.Sc, Ph.D
GapiDraw Systems Architect
[]
User avatar
Johan
pm Member
 
Posts: 1843
Joined: Jan 12, 2002 @ 12:38pm
Location: Sweden


Postby ten foot ninja » May 23, 2006 @ 7:01pm

I can certainly see the benefit of having an async render process with the phone. But it changes things for me because with 3.5 when my game starts up, i load a splash screen, flip it and right away load all my images and game stuff which takes a few seconds (depending on the device).

Now, the same code doesn't work well, my splash screen pops up when i'm almost done loading everything and is ineffective. How can i know when the back buffer has been flipped? How can i know when to actually start loading game stuff? if its in the active scheduler, i can call Start() but will need something within the callback (which i have no access to) that calls Stop().

any ideas? thanks again!
ten foot ninja
pm Member
 
Posts: 19
Joined: Nov 6, 2005 @ 11:21pm


Postby Johan » May 23, 2006 @ 8:25pm

Can you try calling a Sleep() right after the Flip? Like modify GapiApplication and set a member bool to "true" to wait a bit after Flip?
Johan Sanneblad, M.Sc, Ph.D
GapiDraw Systems Architect
[]
User avatar
Johan
pm Member
 
Posts: 1843
Joined: Jan 12, 2002 @ 12:38pm
Location: Sweden


Postby ten foot ninja » May 23, 2006 @ 9:23pm

good idea, but it doesn't seem to work for some reason. Sleep calls User::after() which suspends the entire thread. I'm assuming the actual flipping is done outside of the CGapiApplication thread...

strange, if i take my image loading code out, the load screen gets displayed quickly, like my thread ties up the entire system or flipping happens from within the same thread.

i have another loading screen that happens before each level (loads specific tiles/bosses (which are big, as they should be). Same thing happens then too.
ten foot ninja
pm Member
 
Posts: 19
Joined: Nov 6, 2005 @ 11:21pm


Postby ten foot ninja » Jul 14, 2006 @ 9:06pm

realizing thats its better to have the better OS cooperation that comes with 3.6 rather then the non-syncronous straight-forwardness of 3.5, i spent time sorting this problem out, heres what happens:

for some reason my game thread won't get pre-empted by the window server (that gapidraw uses to copy the backbuffer to the display buffer). i tried sleeping the thread as mentioned above to no avail

instead, what i've done is just get my thread to do nothing for half a second and that seems to make the back buffer flip into the display a lot faster
ten foot ninja
pm Member
 
Posts: 19
Joined: Nov 6, 2005 @ 11:21pm


Return to GapiDraw


Sort


Forum Description

The Cross-platform Graphics SDK for Palms, Pocket PCs, Symbian Devices, and Stationary PCs.

Moderators:

sponge, Johan

Forum permissions

You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

cron