I have been trying to get SDL to draw into a qt widget with moderate
success. After pouring over the mailing lists, I found the SDL_WINDOWID
envar for setting the Wid:
char variable[256];
sprintf(variable, "SDL_WINDOWID=0x%lx", winId());
if (::putenv(variable) == -1)
{
// ....
}
However (as many people have pointed out) this does not seem to work as
a new window pops up with directx. Further digging revealed the problem.
Since sdl is compiled into a separate dll, it uses a separate
environmental block than the application and hence the putenv is not
accessible within the dll.
I then tried:
#define NEED_SDL_GETENV
#include <SDL_getenv.h>
//…
char variable[256];
sprintf(variable, "SDL_WINDOWID=0x%lx", winId());
if (SDL_putenv(variable) == -1)
{
// ....
}
However, this leads to many unstable seg faults. Finally, I hacked
SDL_getenv.c so that for visual studio, SDL_putenv and SDL_getenv call
::putenv and ::getenv. This seems to work as they mod the environment
block of the sdl dll.
Is this the best fix? I am new (about 2 days) to SDL so I feel like I am
missing something obvious. I can post the mods to the SDL_getenv.{h,c}
if it would help.
Cheers,
Mark–
±±=-+=-±=-±=-±=-±=-±=-±=-±=-±=-+
Mark R. Stevens, Ph.D. mstevens at cra.com
Principal Scientist 1-617-491-3474x570
Charles River Analytics http://www.cra.com