Merge pull request #10378 from phcoder/qnx-rb

Several fixes for QNX/Blackberry10
This commit is contained in:
Autechre 2020-04-01 20:46:59 +02:00 committed by GitHub
commit 83958a4402
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 96 additions and 21 deletions

View File

@ -75,15 +75,22 @@ ifeq ($(WHOLE_ARCHIVE_LINK), 1)
WHOLE_END := -Wl,--no-whole-archive
endif
STATIC_BUILD = 1
ifneq (,$(findstring msvc,$(platform)))
LIBS := $(WHOLE_START) $(WHOLE_END)
else
STATIC_BUILD = 0
endif
ifneq (,$(findstring unix,$(platform)))
STATIC_BUILD = 0
endif
ifeq (qnx, $(platform))
STATIC_BUILD = 0
endif
ifeq ($(STATIC_BUILD), 0)
LIBS := $(WHOLE_START) $(WHOLE_END)
else
LIBS := $(WHOLE_START) -lretro_$(platform) $(WHOLE_END)
endif
endif
libogc_platform :=
@ -791,6 +798,44 @@ else ifneq (,$(findstring windows_msvc2015,$(platform)))
export INCLUDE := $(INCLUDE);libretro-common\include;libretro-common\include\compat\msvc;gfx\include;deps;deps\stb
export LIB := $(LIB)
endif
else ifeq (qnx,$(platform))
HAVE_AUDIOMIXER := 1
HAVE_RPNG := 1
HAVE_RJPEG := 1
HAVE_RBMP := 1
HAVE_RTGA := 1
HAVE_ZLIB := 1
HAVE_7ZIP := 1
HAVE_NETWORKING := 1
HAVE_NETWORK_CMD := 1
HAVE_NETPLAYDISCOVERY := 1
HAVE_OVERLAY := 1
HAVE_VIDEO_LAYOUT := 0
HAVE_MATERIALUI := 1
HAVE_XMB := 1
HAVE_STB_FONT := 1
HAVE_THREADS := 1
HAVE_LIBRETRODB := 1
HAVE_COMMAND := 1
HAVE_STDIN_CMD := 1
HAVE_CMD := 1
HAVE_DYLIB := 1
HAVE_DYNAMIC := 1
HAVE_GRIFFIN_CPP := 0
WANT_GLSLANG := 0
HAVE_CONFIGFILE := 1
CC=qcc -Vgcc_ntoarmv7le
CXX=QCC -Vgcc_ntoarmv7le
ifeq ($(DEBUG), 1)
LDFLAGS += -g
endif
PLATCFLAGS += -DHAVE_SHADERPIPELINE -DHAVE_OPENGL -DHAVE_OPENGLES -DHAVE_OPENGLES2 -DHAVE_OZONE -DHAVE_CC_RESAMPLER -DHAVE_CHEEVOS -DRC_DISABLE_LUA -DHAVE_FBO -DHAVE_GL_SYNC -DHAVE_GLSLANG -DHAVE_BUILTINGLSLANG -DHAVE_IMAGEVIEWER -DHAVE_LANGEXTRA -DHAVE_RUNAHEAD -DHAVE_GFX_WIDGETS -DHAVE_CONFIGFILE -DHAVE_SPIRV_CROSS -DHAVE_STB_FONT -DHAVE_ONLINE_UPDATER -DHAVE_UPDATE_ASSETS -DHAVE_UPDATE_CORES -DHAVE_XMB -DRARCH_INTERNAL -DWANT_GLSLANG -DHAVE_XCB -DHAVE_EGL -DHAVE_BB10 -DHAVE_GLSL -DHAVE_AL -DRARCH_MOBILE
EXT_TARGET := $(TARGET_NAME)
EXT_INTER_TARGET := $(TARGET_NAME)
INCLUDE += -Ilibretro-common/include -Igfx/include -Ideps -Ideps/stb -Ideps/rcheevos/include -Ideps/SPIRV-Cross -Ideps/glslang -I.
LIBS += -lEGL -lbps -lscreen -lsocket -lm -lGLESv2 -lOpenAL
else ifneq (,$(findstring unix,$(platform)))
HAVE_AUDIOMIXER := 1
HAVE_RPNG := 1
@ -1096,7 +1141,12 @@ $(APP_BOOTER_DIR)/app_booter.bin:
$(MAKE) -C $(APP_BOOTER_DIR)
pkg: all
ifeq ($(platform), wii)
ifeq ($(platform), qnx)
mkdir -p pkg/qnx/pkg
cp -r $(EXT_TARGET) pkg/qnx/pkg/RetroArch
cp -r media/canvas.png pkg/qnx/pkg/canvas.png
cp -r media/retroarch-96x96.png pkg/qnx/pkg/retroarch-96x96.png
else ifeq ($(platform), wii)
cp -r $(EXT_TARGET) pkg/wii/CORE.dol
else ifeq ($(platform), ngc)
cp -r $(EXT_TARGET) pkg/ngc/CORE.dol
@ -1104,6 +1154,18 @@ else ifeq ($(platform), psp1)
psp-fixup-imports$(EXT) $(EXT_TARGET)
endif
ifeq ($(platform), qnx)
retroarch-dev.bar: pkg
ifeq ($(QNX_DEBUGTOKEN),)
blackberry-nativepackager -package $@ -devMode pkg/qnx/bar-descriptor.xml -C pkg/qnx/pkg pkg/qnx/pkg/*
else
blackberry-nativepackager -package $@ -devMode -debugToken $(QNX_DEBUGTOKEN) pkg/qnx/bar-descriptor.xml -C pkg/qnx/pkg pkg/qnx/pkg/*
endif
retroarch-release.bar: pkg
blackberry-nativepackager -package $@ pkg/qnx/bar-descriptor.xml -C pkg/qnx/pkg pkg/qnx/pkg/*
endif
shaders-checkout:
@if test -d $(SHADER_CG_DIR); then \
echo "[SHADER CHECKOUT::] Git pulling common-shaders..."; \

View File

@ -102,8 +102,6 @@ static void frontend_qnx_get_environment_settings(int *argc, char *argv[],
fill_pathname_join(g_defaults.dirs[DEFAULT_DIR_VIDEO_LAYOUT], data_path,
"layouts", sizeof(g_defaults.dirs[DEFAULT_DIR_VIDEO_LAYOUT]));
#endif
fill_pathname_join(g_defaults.dirs[DEFAULT_DIR_SHADERS], data_path,
"shaders", sizeof(g_defaults.dirs[DEFAULT_DIR_SHADERS]));
/* user data */
fill_pathname_join(g_defaults.dirs[DEFAULT_DIR_CHEATS], user_path,
@ -116,8 +114,6 @@ static void frontend_qnx_get_environment_settings(int *argc, char *argv[],
"downloads", sizeof(g_defaults.dirs[DEFAULT_DIR_CORE_ASSETS]));
fill_pathname_join(g_defaults.dirs[DEFAULT_DIR_AUDIO_FILTER], user_path,
"filters/audio", sizeof(g_defaults.dirs[DEFAULT_DIR_AUDIO_FILTER]));
fill_pathname_join(g_defaults.dirs[DEFAULT_VIDEO_FILTER], user_path,
"filters/video", sizeof(g_defaults.dirs[DEFAULT_VIDEO_FILTER]));
fill_pathname_join(g_defaults.dirs[DEFAULT_DIR_PLAYLIST], user_path,
"playlists", sizeof(g_defaults.dirs[DEFAULT_DIR_PLAYLIST]));
fill_pathname_join(g_defaults.dirs[DEFAULT_DIR_REMAP], user_path,
@ -130,8 +126,6 @@ static void frontend_qnx_get_environment_settings(int *argc, char *argv[],
"states", sizeof(g_defaults.dirs[DEFAULT_DIR_SAVESTATE]));
fill_pathname_join(g_defaults.dirs[DEFAULT_DIR_SYSTEM], user_path,
"system", sizeof(g_defaults.dirs[DEFAULT_DIR_SYSTEM]));
fill_pathname_join(g_defaults.dirs[DEFAULT_DIR_THUMBNAIL], user_path,
"thumbnails", sizeof(g_defaults.dirs[DEFAULT_DIR_THUMBNAIL]));
fill_pathname_join(g_defaults.dirs[DEFAULT_DIR_WALLPAPERS], user_path,
"wallpapers", sizeof(g_defaults.dirs[DEFAULT_DIR_WALLPAPERS]));
fill_pathname_join(g_defaults.dirs[DEFAULT_DIR_LOGS], user_path,

View File

@ -135,7 +135,6 @@ static void qnx_process_gamepad_event(
int i;
screen_device_t device;
qnx_input_device_t* controller = NULL;
uint64_t *state_cur = NULL;
(void)type;
@ -307,18 +306,35 @@ static void qnx_handle_device(qnx_input_t *qnx,
}
/* Find currently connected gamepads. */
static void qnx_discover_controllers(qnx_input_t *qnx)
static int qnx_discover_controllers(qnx_input_t *qnx)
{
/* Get an array of all available devices. */
int deviceCount;
int deviceCount = 0;
int ret;
unsigned i;
screen_get_context_property_iv(screen_ctx,
ret = screen_get_context_property_iv(screen_ctx,
SCREEN_PROPERTY_DEVICE_COUNT, &deviceCount);
if (ret < 0) {
RARCH_ERR("Error querying SCREEN_PROPERTY_DEVICE_COUNT: [%d] %s\n",
errno, strerror(errno));
return false;
}
screen_device_t* devices_found = (screen_device_t*)
calloc(deviceCount, sizeof(screen_device_t));
screen_get_context_property_pv(screen_ctx,
if (!devices_found) {
RARCH_ERR("Error allocating devices_found, deviceCount=%d\n",
deviceCount);
return false;
}
ret = screen_get_context_property_pv(screen_ctx,
SCREEN_PROPERTY_DEVICES, (void**)devices_found);
if (ret < 0) {
RARCH_ERR("Error querying SCREEN_PROPERTY_DEVICES: [%d] %s\n",
errno, strerror(errno));
return false;
}
/* Scan the list for gamepad and joystick devices. */
for(i = 0; i < qnx->pads_connected; ++i)
@ -348,6 +364,8 @@ static void qnx_discover_controllers(qnx_input_t *qnx)
}
free(devices_found);
return true;
}
#endif
@ -596,7 +614,6 @@ static void qnx_handle_screen_event(qnx_input_t *qnx, bps_event_t *event)
static void qnx_handle_navigator_event(
qnx_input_t *qnx, bps_event_t *event)
{
navigator_window_state_t state;
bps_event_t *event_pause = NULL;
switch (bps_event_get_code(event))
@ -652,9 +669,6 @@ static void qnx_handle_navigator_event(
return;
togglemenu:
command_event(CMD_EVENT_MENU_TOGGLE, NULL);
return;
shutdown:
rarch_ctl(RARCH_CTL_SET_SHUTDOWN, NULL);
return;
@ -808,7 +822,7 @@ static int16_t qnx_input_state(void *data,
for (i = 0; i < RARCH_FIRST_CUSTOM_BIND; i++)
{
if (qnx_is_pressed(
qnx, joypad_info, port, binds[port], i))
qnx, joypad_info, binds[port], port, i))
{
ret |= (1 << i);
continue;
@ -818,9 +832,14 @@ static int16_t qnx_input_state(void *data,
return ret;
}
else
if (qnx_is_pressed(qnx, joypad_info, port, binds[port], id))
if (qnx_is_pressed(qnx, joypad_info, binds[port], port, id))
return true;
break;
case RETRO_DEVICE_ANALOG:
if (binds[port])
return input_joypad_analog(qnx->joypad, joypad_info,
port, idx, id, binds[port]);
return 0;
case RETRO_DEVICE_KEYBOARD:
return qnx_keyboard_pressed(qnx, id);
case RETRO_DEVICE_POINTER: