I've been playing with a Raspberry Pi 5 and trying to get SDL working. It's very cool that the purebasic/purelibraries/linux folder has a built in library, but it seems it's missing a bunch of functions. So I can call SDL_Init_(#SDL_INIT_VIDEO) (for instance) and it succeeds, but if I call SDL_CreateWindowFrom_(hwnd), the compiler says that the function doesn't exist. The same with some other functions. Anyone else have this problem? And any solutions?
TIA
Russ
SDL on Raspberry Pi
Re: SDL on Raspberry Pi
Not all extended libraries are implemented in the PB.
So implement them yourself ...
Update 2
So implement them yourself ...
Update 2

Code: Select all
;-TOP by mk-soft
; ----
#SDL_WINDOWEVENT = $200;
Enumeration
#SDL_WINDOWEVENT_NONE
#SDL_WINDOWEVENT_SHOWN
#SDL_WINDOWEVENT_HIDDEN
#SDL_WINDOWEVENT_EXPOSED
#SDL_WINDOWEVENT_MOVED
#SDL_WINDOWEVENT_RESIZED
#SDL_WINDOWEVENT_SIZE_CHANGED
#SDL_WINDOWEVENT_MINIMIZED
#SDL_WINDOWEVENT_MAXIMIZED
#SDL_WINDOWEVENT_RESTORED
#SDL_WINDOWEVENT_ENTER
#SDL_WINDOWEVENT_LEAVE
#SDL_WINDOWEVENT_FOCUS_GAINED
#SDL_WINDOWEVENT_FOCUS_LOST
#SDL_WINDOWEVENT_CLOSE
#SDL_WINDOWEVENT_TAKE_FOCUS
#SDL_WINDOWEVENT_HIT_TEST
#SDL_WINDOWEVENT_ICCPROF_CHANGED
#SDL_WINDOWEVENT_DISPLAY_CHANGED
EndEnumeration
Structure SDL_WindowEvent
type.l
timestamp.l
windowID.l
event.b
data1.l
data2.l
EndStructure
; ----
Structure SDL_Event2
StructureUnion
type.l
window.SDL_WindowEvent
dummy.l[40]
EndStructureUnion
EndStructure
; ----
PrototypeC SDL_CreateWindowFrom(*data)
PrototypeC SDL_Init(flags.l)
PrototypeC SDL_Quit()
PrototypeC SDL_CreateWindow(title.p-utf8, x.i, y.i, w.i, h.i, flags.l)
PrototypeC SDL_DestroyWindow(*window)
PrototypeC SDL_PollEvent(*event)
PrototypeC SDL_WaitEvent(*event)
PrototypeC SDL_Delay(time)
PrototypeC SDL_GetError() ; *char
Procedure InitSDL2()
Global libSDL2
libSDL2 = OpenLibrary(#PB_Any, "libSDL2.so")
If libSDL2
Global SDL_CreateWindowFrom.SDL_CreateWindowFrom = GetFunction(libSDL2, "SDL_CreateWindowFrom")
Global SDL_CreateWindow.SDL_CreateWindow = GetFunction(libSDL2, "SDL_CreateWindow")
Global SDL_DestroyWindow.SDL_DestroyWindow = GetFunction(libSDL2, "SDL_DestroyWindow")
Global SDL_Init.SDL_Init = GetFunction(libSDL2, "SDL_Init")
Global SDL_Quit.SDL_Quit = GetFunction(libSDL2, "SDL_Quit")
Global SDL_Quit.SDL_Quit = GetFunction(libSDL2, "SDL_Quit")
Global SDL_PollEvent.SDL_PollEvent = GetFunction(libSDL2, "SDL_PollEvent")
Global SDL_WaitEvent.SDL_WaitEvent = GetFunction(libSDL2, "SDL_WaitEvent")
Global SDL_Delay.SDL_Delay = GetFunction(libSDL2, "SDL_Delay")
Global SDL_GetError.SDL_GetError = GetFunction(libSDL2, "SDL_GetError")
EndIf
ProcedureReturn libSDL2
EndProcedure
; ----
If Not InitSDL2()
End
EndIf
Global event.SDL_Event2
If SDL_Init(#SDL_INIT_VIDEO) = 0
*win = SDL_CreateWindow("SDL_Window", 100, 100, 640, 480, 0)
If *win
Repeat
While SDL_PollEvent(@event) ; SDL_WaitEvent(@Event)
Select event\type
Case #SDL_WINDOWEVENT
Select event\window\event
Case #SDL_WINDOWEVENT_CLOSE
Debug "windowID " + event\window\windowID + " Close"
Done = #True
Case #SDL_WINDOWEVENT_MINIMIZED
Debug "windowID " + event\window\windowID + " Minimize"
Case #SDL_WINDOWEVENT_RESTORED
Debug "windowID " + event\window\windowID + " Restore"
EndSelect
EndSelect
Wend
SDL_Delay(100)
Until Done
SDL_DestroyWindow(*win)
EndIf
SDL_Quit()
Else
error = SDL_GetError()
If error
Debug "Error Init: " + PeekS(error, -1, #PB_Ascii)
EndIf
EndIf
My Projects ThreadToGUI / OOP-BaseClass / EventDesigner V3
PB v3.30 / v5.75 - OS Mac Mini OSX 10.xx - VM Window Pro / Linux Ubuntu
Downloads on my Webspace / OneDrive
PB v3.30 / v5.75 - OS Mac Mini OSX 10.xx - VM Window Pro / Linux Ubuntu
Downloads on my Webspace / OneDrive