In hindsight my emscripten-ifdef (70d416a8f63f) is nonsense.
As fpcrtl_glShaderSource() would not be defined and lead to compiling issues.
So either it's 3 ifdefs (in pas2cRedo, pas2cSystem and misc.c),
in order to toggle between fpcrtl_ and the native function,
or alternatively have no ifdef for it at all.
I'm going with none at all,
which means emscripten will compile with the original (const) function prototype,
being wrapped by the fpcrtl_ function, same as non-emscripten builds.
{$INCLUDE "options.inc"}
unit uCursor;
interface
procedure init;
procedure resetPosition;
procedure resetPositionDelta();
procedure updatePositionDelta(xrel, yrel: LongInt);
procedure updatePosition();
procedure handlePositionUpdate(x, y: LongInt);
implementation
uses SDLh, uVariables, uTypes;
procedure init;
begin
SDL_ShowCursor(SDL_DISABLE);
resetPosition();
{$IFNDEF USE_TOUCH_INTERFACE}
SDL_SetRelativeMouseMode(SDL_TRUE);
{$ENDIF}
end;
procedure resetPosition;
begin
if GameType = gmtRecord then
exit;
SDL_WarpMouse(cScreenWidth div 2, cScreenHeight div 2);
resetPositionDelta();
end;
procedure resetPositionDelta();
begin
CursorPointDelta.X:= 0;
CursorPointDelta.Y:= 0;
end;
procedure updatePositionDelta(xrel, yrel: LongInt);
begin
CursorPointDelta.X:= CursorPointDelta.X + xrel;
CursorPointDelta.Y:= CursorPointDelta.Y + yrel;
end;
procedure updatePosition();
begin
handlePositionUpdate(CursorPointDelta.X, CursorPointDelta.Y);
resetPositionDelta();
end;
procedure handlePositionUpdate(x, y: LongInt);
begin
CursorPoint.X:= CursorPoint.X + x;
CursorPoint.Y:= CursorPoint.Y - y;
end;
end.