Hello, i have problem with my engine class. When i compile it on linux, all works fine, but on windows something crash application. I use FPC 2.0.4.

Code:
unit engine;

interface

uses
	sdl,
	dglOpenGL,
	sysUtils;
	
var
	oldGetTicks: uInt32;
	frame: double;
	frameRate: integer = 0;
	frameCount: integer = 0;
	timerTime: uInt32 = 0;
	
type
	TEngine = class
	private
		quit: boolean;
		event: tsdl_event;
		mousePos: TPoint;

		procedure keyDown(key: integer);
		procedure keyUp(key: integer);
		procedure mouseUp(key: integer);
		procedure mouseDown(key: integer);
		procedure update;
		procedure render;
		procedure start;
	public
		width, height, bpp: integer;
		fullscreen: boolean;
		fps, maxFps: integer;
		title: string;
		screen: psdl_surface;
		constructor create;
		procedure init;
	end;
	
procedure initOpenGL(width, height, fps: integer);

implementation
	
procedure initOpenGL(width, height, fps: integer);
begin
	glShadeModel(gl_smooth);
	glClearColor(0.0, 0.0, 0.0, 0.0);
	glDisable(gl_depth_test);
	glHint(gl_perspective_correction_hint, gl_nicest);
	
	glViewport(0, 0, width , height);
	
	glMatrixMode(gl_projection);
	
	glLoadIdentity();
	
	glOrtho(0, width, height, 0, 0, fps);
	glMatrixMode(gl_modelview);
	glLoadIdentity();
	glEnable(gl_texture_2d);
	glBlendFunc(gl_src_alpha, gl_one_minus_src_alpha);
end;
	
constructor TEngine.create;
begin
	quit := false;
	fullscreen := false;
	width := 800;
	height := 600;
	bpp := 32;
	fps := 0;
	maxFps := 100;
	title := 'engine';
end;

procedure TEngine.init;
var
	videoInfo : psdl_videoInfo;
	videoFlags: cardinal;
begin
	if sdl_init(sdl_init_video) = -1 then
	begin
		sdl_quit;
		halt(1);
	end;
	
	videoInfo := sdl_getVideoInfo;
	
	videoFlags := sdl_opengl;
	videoFlags := videoFlags or sdl_doublebuf;
	videoFlags := videoFlags or sdl_hwpalette;
	
	if fullscreen then videoFlags := videoFlags or sdl_fullscreen;
		
	if videoInfo.hw_available <> 0 then
		videoFlags &#58;= videoFlags or sdl_hwsurface
	else
		videoFlags &#58;= videoFlags or sdl_swsurface;
	
	if  videoInfo.blit_hw <0>= timerTime + 1000 then
	begin
		fps &#58;= frameCount;
		frameCount &#58;= 0;
		timerTime &#58;= sdl_getTicks;
	end;
	
	sdl_wm_setCaption&#40;PChar&#40;'FPS&#58; ' + intToStr&#40;fps&#41;&#41;, nil&#41;;
end;
	
procedure TEngine.start;
var
	i&#58; integer;
begin
	oldGetTicks &#58;= sdl_getTicks;
	frame &#58;= 0;
	
	while not quit do
	begin
		while sdl_pollEvent&#40;@event&#41; > 0 do
		begin
			if event.type_ = sdl_quitev then quit &#58;= true;
			
			if event.type_ = sdl_keydown then
			begin
				case event.key.keysym.sym of 
					sdlk_escape&#58;
						quit &#58;= true;
				end;
				
				keyDown&#40;event.key.keysym.sym&#41;;
			end;
				
			if event.type_ = sdl_keyup then
			begin
				keyUp&#40;event.key.keysym.sym&#41;;
			end;
			
			if event.type_ = sdl_mousemotion then
			begin
				mousePos.x &#58;= event.button.x;
				mousePos.y &#58;= event.button.y;
			end;
			
			if event.type_ = sdl_mousebuttonup then
			begin
				if event.button.button = sdl_button_left then
				begin
					mouseUp&#40;1&#41;;
				end;
				if event.button.button = sdl_button_right then
					mouseUp&#40;2&#41;;
			end;
			if event.type_ = sdl_mousebuttondown then
			begin
				if event.button.button = sdl_button_left then
				begin
					mouseDown&#40;1&#41;;
				end;
				if event.button.button = sdl_button_right then
					mouseDown&#40;2&#41;;
			end;
		end;
				
		if sdl_getTicks - oldGetTicks > 0 then frame &#58;= frame + &#40;maxFps / &#40;1000 / &#40;sdl_getTicks - oldGetTicks&#41;&#41;&#41;;
		oldGetTicks &#58;= sdl_getTicks;
		
		for i &#58;= 1 to trunc&#40;frame&#41; do
		begin
			update;
                end;        

		frame &#58;= frame - trunc&#40;frame&#41;;
                             
		render;
		
		sdl_flip&#40;screen&#41;;

		sdl_delay&#40;1&#41;
	end;
end;
		
end.
ttp://pordesign.eu/public_html/hax/opengl.rar - sample for windows.