X-Git-Url: http://deadsoftware.ru/gitweb?a=blobdiff_plain;f=src%2Fgame%2Fsdl%2Fg_system.pas;h=4cb69f90349c26ac449f029ded27ff3e30303747;hb=96f8e6b190e94847ab2527cc07ee8b19589c05fa;hp=4120c0271cc8f29f3ec32f284105990b41bad66e;hpb=dbf81afaefeb52e53d2b8af3a782277229c5adaa;p=d2df-sdl.git diff --git a/src/game/sdl/g_system.pas b/src/game/sdl/g_system.pas index 4120c02..4cb69f9 100644 --- a/src/game/sdl/g_system.pas +++ b/src/game/sdl/g_system.pas @@ -24,7 +24,7 @@ interface procedure sys_Delay (ms: Integer); (* --- Graphics --- *) - function sys_GetDispalyModes (bpp: Integer): SSArray; + function sys_GetDisplayModes (bpp: Integer): SSArray; function sys_SetDisplayMode (w, h, bpp: Integer; fullscreen: Boolean): Boolean; procedure sys_EnableVSync (yes: Boolean); procedure sys_Repaint; @@ -41,6 +41,7 @@ implementation uses SysUtils, SDL, Math, + {$INCLUDE ../nogl/noGLuses.inc} e_log, e_graphics, e_input, e_sound, g_options, g_window, g_console, g_game, g_menu, g_gui, g_main; @@ -108,6 +109,9 @@ implementation screen := SDL_SetVideoMode(w, h, bpp, flags); if screen <> nil then begin + {$IFDEF NOGL_INIT} + nogl_Init; + {$ENDIF} SDL_WM_SetCaption(GameTitle, nil); UpdateSize(w, h); result := True @@ -129,7 +133,7 @@ implementation (* ??? *) end; - function sys_GetDispalyModes (bpp: Integer): SSArray; + function sys_GetDisplayModes (bpp: Integer): SSArray; var m: PPSDL_Rect; f: TSDL_PixelFormat; i, count: Integer; begin SetLength(result, 0); @@ -138,7 +142,7 @@ implementation f.BitsPerPixel := bpp; f.BytesPerPixel := (bpp + 7) div 8; m := SDL_ListModes(@f, SDL_OPENGL or SDL_FULLSCREEN); - if (m <> NIL) and (IntPtr(m) <> -1) then + if (m <> NIL) and (UIntPtr(m) <> UIntPtr(-1)) then begin count := 0; while m[count] <> nil do inc(count); @@ -444,7 +448,7 @@ implementation (* --------- Init --------- *) procedure sys_Init; - var flags: Uint32; ok: Boolean; i: Integer; + var flags: Uint32; i: Integer; begin e_WriteLog('Init SDL', TMsgType.Notify); flags := SDL_INIT_VIDEO or SDL_INIT_AUDIO or @@ -452,9 +456,6 @@ implementation (*or SDL_INIT_NOPARACHUTE*); if SDL_Init(flags) <> 0 then raise Exception.Create('SDL: Init failed: ' + SDL_GetError); - ok := InitWindow(gScreenWidth, gScreenHeight, gBPP, gFullScreen); - if not ok then - raise Exception.Create('SDL: Failed to set videomode: ' + SDL_GetError); SDL_EnableUNICODE(1); SDL_EnableKeyRepeat(SDL_DEFAULT_REPEAT_DELAY, SDL_DEFAULT_REPEAT_INTERVAL); for i := 0 to e_MaxJoys - 1 do @@ -467,7 +468,13 @@ implementation e_WriteLog('Releasing SDL', TMsgType.Notify); for i := 0 to e_MaxJoys - 1 do RemoveJoystick(i); - SDL_FreeSurface(screen); + if screen <> nil then + begin + {$IFDEF NOGL_INIT} + nogl_Quit; + {$ENDIF} + SDL_FreeSurface(screen) + end; SDL_Quit end;