riscos: Implement SDL_OpenURL()
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98
diff --git a/CMakeLists.txt b/CMakeLists.txt
index c510440..3f3cc7a 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -1918,6 +1918,10 @@ elseif(HAIKU)
CheckPTHREAD()
elseif(RISCOS)
+ file(GLOB MISC_SOURCES ${SDL2_SOURCE_DIR}/src/misc/riscos/*.c)
+ set(SOURCE_FILES ${SOURCE_FILES} ${MISC_SOURCES})
+ set(HAVE_SDL_MISC TRUE)
+
if(SDL_TIMERS)
set(SDL_TIMER_UNIX 1)
file(GLOB TIMER_SOURCES ${SDL2_SOURCE_DIR}/src/timer/unix/*.c)
diff --git a/configure b/configure
index 2fc4107..971d05d 100755
--- a/configure
+++ b/configure
@@ -25486,6 +25486,9 @@ $as_echo "#define SDL_TIMER_UNIX 1" >>confdefs.h
CheckPTHREAD
CheckClockGettime
+ SOURCES="$SOURCES $srcdir/src/misc/riscos/*.c"
+ have_misc=yes
+
# Set up files for the timer library
if test x$enable_timers = xyes; then
diff --git a/configure.ac b/configure.ac
index 4675d36..9452d54 100644
--- a/configure.ac
+++ b/configure.ac
@@ -4154,6 +4154,9 @@ AS_HELP_STRING([--enable-render-d3d], [enable the Direct3D render driver [[defau
CheckPTHREAD
CheckClockGettime
+ SOURCES="$SOURCES $srcdir/src/misc/riscos/*.c"
+ have_misc=yes
+
# Set up files for the timer library
if test x$enable_timers = xyes; then
AC_DEFINE(SDL_TIMER_UNIX, 1, [ ])
diff --git a/src/misc/riscos/SDL_sysurl.c b/src/misc/riscos/SDL_sysurl.c
new file mode 100644
index 0000000..f51661f
--- /dev/null
+++ b/src/misc/riscos/SDL_sysurl.c
@@ -0,0 +1,49 @@
+/*
+ Simple DirectMedia Layer
+ Copyright (C) 1997-2020 Sam Lantinga <slouken@libsdl.org>
+
+ This software is provided 'as-is', without any express or implied
+ warranty. In no event will the authors be held liable for any damages
+ arising from the use of this software.
+
+ Permission is granted to anyone to use this software for any purpose,
+ including commercial applications, and to alter it and redistribute it
+ freely, subject to the following restrictions:
+
+ 1. The origin of this software must not be misrepresented; you must not
+ claim that you wrote the original software. If you use this software
+ in a product, an acknowledgment in the product documentation would be
+ appreciated but is not required.
+ 2. Altered source versions must be plainly marked as such, and must not be
+ misrepresented as being the original software.
+ 3. This notice may not be removed or altered from any source distribution.
+*/
+
+#include "../SDL_sysurl.h"
+
+#include <kernel.h>
+#include <swis.h>
+
+#ifndef URI_Dispatch
+#define URI_Dispatch 0x4e381
+#endif
+
+int
+SDL_SYS_OpenURL(const char *url)
+{
+ _kernel_swi_regs regs;
+ _kernel_oserror *error;
+
+ regs.r[0] = 0;
+ regs.r[1] = (int)url;
+ regs.r[2] = 0;
+ error = _kernel_swi(URI_Dispatch, ®s, ®s);
+ if (error) {
+ return SDL_SetError("Couldn't open given URL: %s", error->errmess);
+ }
+
+ return (regs.r[0] & 1) ? SDL_SetError("Couldn't open given URL.") : 0;
+}
+
+/* vi: set ts=4 sw=4 expandtab: */
+