[SDL] SDL_RenderPresent example doesn't work with X11 renderer?
Alex Barry
alex.barry at gmail.com
Tue Nov 23 14:53:48 PST 2010
Try doing this:
SDL_CreateRenderer( window, -1, SDL_RENDERER_SINGLEBUFFER );
SDL_SelectRenderer( window );
Either this is an issue with the renderer not being selected, or a problem
with double/triple/x-buffering. If the above code works, awesome, and if
not, let me know and we can do some more troubleshooting.
Take care,
-Alex
On Tue, Nov 23, 2010 at 4:37 PM, Eris <discordia at eldalin.com> wrote:
>
>
> MrOzBarry wrote:
>
>
> What is your hardware and operating system?
>
>
>
>
>
> OS: Slackware Linux 13.1
> Kernel: 2.6.33.4-smp (stock Slackware kernel)
>
> Video card: ATI Radeon HD 4670 with 1Gb ram
> Video Driver: ATI Catalyst v10.8
>
> And if it matters:
> Motherboard: Gigabyte GA-MA790X-UD4P with BIOS version F10a
> CPU: AMD Phenom(tm) 9750 Quad-Core Processor stepping 03
> RAM: 4Gb
>
>
> Also, I was trying to track this down last night and started with the
> testdraw2 program in the test directory. It works, so I kept stripping out
> features from it until it broke. What I found is that if I run an event
> loop, everything seems to be fine, but if I just do a one shot render and
> then pause, the render doesn't always work.
>
> In fact, I found that if I simply add 2 more calls to SDL_RenderPresent()
> _before_ calling SDL_SetRenderDrawColor and SDL_RenderClear, then the
> program works about 50% of the time. Adding 4 extra SDL_RenderPresent calls
> makes the program seem to work all the time.
>
> I recompiled SDL without optimization and tried debugging it. Everything
> seemed OK to me, but it was 4am and I really don't know anything about X
> programming, so I could easily have missed something.
>
> I'm going to try updating my video driver today, since I see there's newer
> version available now. Maybe it's just something going on in X. The
> intermittent nature of the problem makes me think it's either some sort of
> timing issue, or perhaps uninitialized data somewhere, though.
>
>
> Here's the test program I'm using. I started with the example from
> http://wiki.libsdl.org/moin.cgi/SDL_RenderPresent
>
>
>
> Code:
>
>
>
> #include "SDL.h"
>
> #define USEREPEAT
>
> /* Adding a few more SDL_RenderPresent calls makes the window render
> correctly,
> but only most of the times. Sometimes it still fails.
> */
> #ifdef USEREPEAT
> int main(int argc, char** argv)
> {
> if (SDL_Init(SDL_INIT_VIDEO) < 0) return 1;
>
> SDL_Window* window =
> SDL_CreateWindow("SDL_RenderClear",
> SDL_WINDOWPOS_CENTERED, SDL_WINDOWPOS_CENTERED,
> 512, 512,
> SDL_WINDOW_SHOWN);
> SDL_CreateRenderer(window, -1, 0);
>
> /* Add a couple of SDL_RenderPresent calls and it works about half the
> time.
> Four more calls and it seems reliable.
> */
> SDL_RenderPresent();
> SDL_RenderPresent();
>
> SDL_SetRenderDrawColor(255, 0, 0, 0);
> SDL_RenderClear();
> SDL_RenderPresent();
>
> SDL_Delay(2000);
> SDL_Quit();
> return 0;
> }
> #endif
>
> /* Run in a loop and everything seems to work, although I suspect what
> is happening is that the loop simply causes enough updates to be
> performed that the updates which fail are no longer on screen long
> enough to see.
> Need to examine this more.
> */
> #ifdef USELOOP
> int main(int argc, char** argv)
> {
> if (SDL_Init(SDL_INIT_VIDEO) < 0) return 1;
>
> SDL_Window* window =
> SDL_CreateWindow("SDL_RenderClear",
> SDL_WINDOWPOS_CENTERED, SDL_WINDOWPOS_CENTERED,
> 512, 512,
> SDL_WINDOW_SHOWN);
> SDL_CreateRenderer(window, -1, 0);
>
> int done = 0;
> while (!done) {
> SDL_Event event;
>
> while (SDL_PollEvent(&event)) {
> switch (event.type) {
> case SDL_WINDOWEVENT:
> switch (event.window.event) {
> case SDL_WINDOWEVENT_CLOSE:
> done = 1;
> break;
> }
> break;
> }
> }
>
> SDL_SetRenderDrawColor(255, 0, 0, 0);
> SDL_RenderClear();
> SDL_RenderPresent();
> }
>
> // Always be sure to clean up
> SDL_Quit();
> return 0;
> }
> #endif
>
>
>
> _______________________________________________
> SDL mailing list
> SDL at lists.libsdl.org
> http://lists.libsdl.org/listinfo.cgi/sdl-libsdl.org
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.libsdl.org/pipermail/sdl-libsdl.org/attachments/20101123/6b695de8/attachment.htm>
More information about the SDL
mailing list