Mercurial > sdl-ios-xcode
view CREDITS @ 3485:e77a69aae239
Mason Wheeler to sdl
I updated SDL, and suddenly my SDL frames stopped working. They'd "initialize" full of gibberish, and I couldn't render anything to them. After a bit of digging, I found a problem: the renderer initialization routine in my SDL frame code wasn't getting called anymore.
procedure TSdlFrame.Paint;
begin
if SDL_SelectRenderer(FWindowID) = -1 then
CreateRenderer;
SDL_RenderPresent;
end;
function TSdlFrame.CreateRenderer: boolean;
const
pf: tagPIXELFORMATDESCRIPTOR = (nSize: sizeof(pf); nVersion: 1;
dwFlags: PFD_DRAW_TO_WINDOW or PFD_SUPPORT_OPENGL or PFD_DOUBLEBUFFER;
iPixelType: PFD_TYPE_RGBA; cColorBits: 24; cAlphaBits: 8;
iLayerType: PFD_MAIN_PLANE);
RENDERERS: array[TRendererType] of AnsiString = ('software', 'gdi', 'opengl', 'd3d');
var
pFormat: integer;
begin
if (SDL_SelectRenderer(FWindowID) = 0) then
begin
result := true;
Exit;
end;
if FRendererType = rtOpenGL then
begin
pFormat := ChoosePixelFormat(canvas.Handle, @pf);
if not SetPixelFormat(canvas.Handle, pFormat, @pf) then
outputDebugString(PChar(SysErrorMessage(GetLastError)));
if wglCreateContext(canvas.Handle) = 0 then
outputDebugString(PChar(SysErrorMessage(GetLastError)));
end;
if (SDL_CreateRenderer(FWindowID, SDL_RendererIndex(RENDERERS[FRendererType]), [sdlrPresentFlip3, sdlrAccelerated]) = 0) then
begin
SDL_ShowWindow(FWindowID);
assert(SDL_SetRenderDrawColor(0, 0, 0, 255) = 0);
FFlags := SDL_GetWindowFlags(FWindowID);
if assigned(FOnAvailable) then
FOnAvailable(self);
end
else outputDebugString(pChar(format('SDL_CreateRenderer failed: %s', [sdl_GetError])));
result := SDL_SelectRenderer(FWindowID) = 0;
end;
This is a critical issue. The Paint method gets called when the control receives a WM_PAINT message from Windows. I can't create the renderer before then, or it will fail and cause trouble. And when I do create it, it needs to be created with certain parameters. So imagine my surprise when I started debugging into the DLL and found that SDL_SelectRenderer was trying to be "helpful" by creating the renderer for me if it didn't already exist! Now not only does my initialization code not get called, I end up with the wrong renderer and so things don't render as expected when I try to use the window.
author | Sam Lantinga <slouken@libsdl.org> |
---|---|
date | Tue, 24 Nov 2009 04:48:12 +0000 |
parents | 1ed5d432e468 |
children |
line wrap: on
line source
Simple DirectMedia Layer CREDITS Thanks to everyone who made this possible, including: * Cliff Matthews, for giving me a reason to start this project. :) -- Executor rocks! *grin* * The Linux Fund, C Magazine, Educational Technology Resources Inc., Gareth Noyce, Jesse Pavel, Keith Kitchin, Jeremy Horvath, Thomas Nicholson, Hans-Peter Gygax, the Eternal Lands Development Team, Lars Brubaker, and Phoenix Kokido for financial contributions * Edgar "bobbens" Simo for his force feedback API development during the Google Summer of Code 2008 * Aaron Wishnick for his work on audio resampling and pitch shifting during the Google Summer of Code 2008 * Holmes Futrell for port of SDL to the iPhone and iPod Touch during the Google Summer of Code 2008 * Darren Alton for port of SDL to the Nintendo DS during the Google Summer of Code 2008 * Szymon "Wilku" Wilczek for adding support for multiple mice and tablets during the Google Summer of Code 2008 * Marty Leisner, Andrew, Will, Edgar Simo, Donny Viszneki, Andrea Mazzoleni, Dmytro Bogovych, and Couriersud for helping find SDL 1.3 bugs in the great SDL Bug Hunt of January 2009! * Donny Viszneki for helping fix SDL 1.3 bugs in the great SDL Bug Hunt of January 2009! * Luke Benstead for OpenGL 3.0 support * Gaëtan de Menten for writing the PHP and SQL behind the SDL website * Tim Jones for the new look of the SDL website * Ryan Gordon for helping everybody out and keeping the dream alive. :) * Mattias Engdegård, for help with the Solaris port and lots of other help * Eric Wing, Max Horn, and Darrell Walisser for unflagging work on the Mac OS X port * David Carré, for the Pandora port * Couriersud for the DirectFB driver * Jon Atkins for SDL_image, SDL_mixer and SDL_net documentation * Arne Claus, for the 2004 winning SDL logo, and Shandy Brown, Jac, Alex Lyman, Mikkel Gjoel, #Guy, Jonas Hartmann, Daniel Liljeberg, Ronald Sowa, DocD, Pekka Jaervinen, Patrick Avella, Erkki Kontilla, Levon Gavalian, Hal Emerich, David Wiktorsson, S. Schury and F. Hufsky, Ciska de Ruyver, Shredweat, Tyler Montbriand, Martin Andersson, Merlyn Wysard, Fernando Ibanez, David Miller, Andre Bommele, lovesby.com, Francisco Camenforte Torres, and David Igreja for other logo entries. * Bob Pendleton and David Olofson for being long time contributors to the SDL mailing list. * Everybody at Loki Software, Inc. for their great contributions! And a big hand to everyone else who gave me appreciation, advice, and suggestions, especially the good folks on the SDL mailing list. THANKS! :) -- Sam Lantinga <slouken@libsdl.org>