From 59022829f42aef9d817ddb27d170f96aa10255a9 Mon Sep 17 00:00:00 2001 From: Cameron Cawley Date: Sun, 11 Oct 2020 17:32:32 +0100 Subject: [PATCH] riscos: Implement SDL_OpenURL() --- CMakeLists.txt | 4 +++ configure | 3 +++ configure.ac | 3 +++ src/misc/riscos/SDL_sysurl.c | 49 ++++++++++++++++++++++++++++++++++++ 4 files changed, 59 insertions(+) create mode 100644 src/misc/riscos/SDL_sysurl.c diff --git a/CMakeLists.txt b/CMakeLists.txt index c51044072..3f3cc7a4e 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 2fc410710..971d05d14 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 4675d36e9..9452d5438 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 000000000..f51661f17 --- /dev/null +++ b/src/misc/riscos/SDL_sysurl.c @@ -0,0 +1,49 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2020 Sam Lantinga + + 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 +#include + +#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: */ +