From 9c5c0aea58aea6d8178edeb891d46fe41a3a7e5e Mon Sep 17 00:00:00 2001 From: twinaphex Date: Wed, 2 Jan 2019 13:30:58 +0100 Subject: [PATCH] Start replacing WinRT ifdefs so that Windows Phone 8 can be detected too --- configuration.c | 6 +- core_info.c | 4 +- dynamic.c | 4 +- frontend/drivers/platform_win32.c | 169 ++++++++++++------------ libretro-common/features/features_cpu.c | 2 +- menu/menu_displaylist.c | 13 +- 6 files changed, 104 insertions(+), 94 deletions(-) diff --git a/configuration.c b/configuration.c index aef1d7db2a..d159e75c29 100644 --- a/configuration.c +++ b/configuration.c @@ -56,7 +56,7 @@ #include "record/record_driver.h" -#ifdef __WINRT__ +#if defined(__WINRT__) || defined(WINAPI_FAMILY) && WINAPI_FAMILY == WINAPI_FAMILY_PHONE_APP #include "uwp/uwp_func.h" #endif @@ -439,7 +439,7 @@ static enum midi_driver_enum MIDI_DEFAULT_DRIVER = MIDI_ALSA; static enum midi_driver_enum MIDI_DEFAULT_DRIVER = MIDI_NULL; #endif -#ifdef __WINRT__ +#if defined(__WINRT__) || defined(WINAPI_FAMILY) && WINAPI_FAMILY == WINAPI_FAMILY_PHONE_APP static enum input_driver_enum INPUT_DEFAULT_DRIVER = INPUT_UWP; #elif defined(XENON) static enum input_driver_enum INPUT_DEFAULT_DRIVER = INPUT_XENON360; @@ -2238,7 +2238,7 @@ static config_file_t *open_default_config_file(void) (void)path_size; #if defined(_WIN32) && !defined(_XBOX) -#ifdef __WINRT__ +#if defined(__WINRT__) || defined(WINAPI_FAMILY) && WINAPI_FAMILY == WINAPI_FAMILY_PHONE_APP /* On UWP, the app install directory is not writable so use the writable LocalState dir instead */ fill_pathname_home_dir(app_path, path_size); #else diff --git a/core_info.c b/core_info.c index c356eb7a47..5a33e9f107 100644 --- a/core_info.c +++ b/core_info.c @@ -32,7 +32,7 @@ #include "core_info.h" #include "file_path_special.h" -#ifdef __WINRT__ +#if defined(__WINRT__) || defined(WINAPI_FAMILY) && WINAPI_FAMILY == WINAPI_FAMILY_PHONE_APP #include "uwp/uwp_func.h" #endif @@ -242,7 +242,7 @@ static core_info_list_t *core_info_list_new(const char *path, ok = dir_list_append(contents, path, exts, false, show_hidden_files, false, false); -#ifdef __WINRT__ +#if defined(__WINRT__) || defined(WINAPI_FAMILY) && WINAPI_FAMILY == WINAPI_FAMILY_PHONE_APP /* UWP: browse the optional packages for additional cores */ struct string_list *core_packages = string_list_new(); uwp_fill_installed_core_packages(core_packages); diff --git a/dynamic.c b/dynamic.c index 4f102e03a4..cbe706c79a 100644 --- a/dynamic.c +++ b/dynamic.c @@ -306,7 +306,9 @@ static void libretro_get_environment_info(void (*func)(retro_environment_t), static bool load_dynamic_core(void) { -#ifndef __WINRT__ /* Can't lookup symbols in itself on UWP */ +#if defined(__WINRT__) || defined(WINAPI_FAMILY) && WINAPI_FAMILY == WINAPI_FAMILY_PHONE_APP + /* Can't lookup symbols in itself on UWP */ +#else function_t sym = dylib_proc(NULL, "retro_init"); if (sym) diff --git a/frontend/drivers/platform_win32.c b/frontend/drivers/platform_win32.c index c655a594c5..c66cb3835f 100644 --- a/frontend/drivers/platform_win32.c +++ b/frontend/drivers/platform_win32.c @@ -43,11 +43,12 @@ #include "../../verbosity.h" #include "../../ui/drivers/ui_win32.h" -#ifdef __WINRT__ +#if defined(__WINRT__) || defined(WINAPI_FAMILY) && WINAPI_FAMILY == WINAPI_FAMILY_PHONE_APP #include "../../uwp/uwp_func.h" #endif -#ifndef __WINRT__ +#if defined(__WINRT__) || defined(WINAPI_FAMILY) && WINAPI_FAMILY == WINAPI_FAMILY_PHONE_APP +#else /* We only load this library once, so we let it be * unloaded at application shutdown, since unloading * it early seems to cause issues on some systems. @@ -157,7 +158,6 @@ static void frontend_win32_get_os(char *s, size_t len, int *major, int *minor) char buildStr[11] = {0}; bool server = false; const char *arch = ""; - bool serverR2 = false; #if defined(_WIN32_WINNT) && _WIN32_WINNT >= 0x0500 /* Windows 2000 and later */ @@ -171,9 +171,6 @@ static void frontend_win32_get_os(char *s, size_t len, int *major, int *minor) GetVersionEx((OSVERSIONINFO*)&vi); server = vi.wProductType != VER_NT_WORKSTATION; -#ifndef __WINRT__ - serverR2 = GetSystemMetrics(SM_SERVERR2); -#endif switch (si.wProcessorArchitecture) { @@ -253,10 +250,14 @@ static void frontend_win32_get_os(char *s, size_t len, int *major, int *minor) { case 2: if (server) - if (serverR2) - strlcpy(s, "Windows Server 2003 R2", len); - else - strlcpy(s, "Windows Server 2003", len); + { + strlcpy(s, "Windows Server 2003", len); +#if defined(__WINRT__) || defined(WINAPI_FAMILY) && WINAPI_FAMILY == WINAPI_FAMILY_PHONE_APP +#else + if (GetSystemMetrics(SM_SERVERR2)) + strlcat(s, " R2", len); +#endif + } else { /* Yes, XP Pro x64 is a higher version number than XP x86 */ @@ -311,7 +312,7 @@ static void frontend_win32_get_os(char *s, size_t len, int *major, int *minor) strlcat(s, vi.szCSDVersion, len); } -#ifdef __WINRT__ +#if defined(__WINRT__) || defined(WINAPI_FAMILY) && WINAPI_FAMILY == WINAPI_FAMILY_PHONE_APP if (!string_is_empty(uwp_device_family)) { strlcat(s, " ", len); @@ -322,7 +323,8 @@ static void frontend_win32_get_os(char *s, size_t len, int *major, int *minor) static void frontend_win32_init(void *data) { -#ifndef __WINRT__ +#if defined(__WINRT__) || defined(WINAPI_FAMILY) && WINAPI_FAMILY == WINAPI_FAMILY_PHONE_APP +#else typedef BOOL (WINAPI *isProcessDPIAwareProc)(); typedef BOOL (WINAPI *setProcessDPIAwareProc)(); #ifdef HAVE_DYNAMIC @@ -407,22 +409,7 @@ static int frontend_win32_parse_drive_list(void *data, bool load_content) enum msg_hash_enums enum_idx = load_content ? MENU_ENUM_LABEL_FILE_DETECT_CORE_LIST_PUSH_DIR : MSG_UNKNOWN; -#ifndef __WINRT__ - size_t i = 0; - unsigned drives = GetLogicalDrives(); - char drive[] = " :\\"; - - for (i = 0; i < 32; i++) - { - drive[0] = 'A' + i; - if (drives & (1 << i)) - menu_entries_append_enum(list, - drive, - msg_hash_to_str(MENU_ENUM_LABEL_FILE_DETECT_CORE_LIST_PUSH_DIR), - enum_idx, - FILE_TYPE_DIRECTORY, 0, 0); - } -#else +#if defined(__WINRT__) || defined(WINAPI_FAMILY) && WINAPI_FAMILY == WINAPI_FAMILY_PHONE_APP /* TODO (krzys_h): UWP storage sandboxing */ char *home_dir = (char*)malloc(PATH_MAX_LENGTH * sizeof(char)); @@ -437,6 +424,21 @@ static int frontend_win32_parse_drive_list(void *data, bool load_content) FILE_TYPE_DIRECTORY, 0, 0); free(home_dir); +#else + size_t i = 0; + unsigned drives = GetLogicalDrives(); + char drive[] = " :\\"; + + for (i = 0; i < 32; i++) + { + drive[0] = 'A' + i; + if (drives & (1 << i)) + menu_entries_append_enum(list, + drive, + msg_hash_to_str(MENU_ENUM_LABEL_FILE_DETECT_CORE_LIST_PUSH_DIR), + enum_idx, + FILE_TYPE_DIRECTORY, 0, 0); + } #endif #endif @@ -446,56 +448,7 @@ static int frontend_win32_parse_drive_list(void *data, bool load_content) static void frontend_win32_environment_get(int *argc, char *argv[], void *args, void *params_data) { -#ifndef __WINRT__ - gfx_set_dwm(); - - fill_pathname_expand_special(g_defaults.dirs[DEFAULT_DIR_ASSETS], - ":\\assets", sizeof(g_defaults.dirs[DEFAULT_DIR_ASSETS])); - fill_pathname_expand_special(g_defaults.dirs[DEFAULT_DIR_AUDIO_FILTER], - ":\\filters\\audio", sizeof(g_defaults.dirs[DEFAULT_DIR_AUDIO_FILTER])); - fill_pathname_expand_special(g_defaults.dirs[DEFAULT_DIR_VIDEO_FILTER], - ":\\filters\\video", sizeof(g_defaults.dirs[DEFAULT_DIR_VIDEO_FILTER])); - fill_pathname_expand_special(g_defaults.dirs[DEFAULT_DIR_CHEATS], - ":\\cheats", sizeof(g_defaults.dirs[DEFAULT_DIR_CHEATS])); - fill_pathname_expand_special(g_defaults.dirs[DEFAULT_DIR_DATABASE], - ":\\database\\rdb", sizeof(g_defaults.dirs[DEFAULT_DIR_DATABASE])); - fill_pathname_expand_special(g_defaults.dirs[DEFAULT_DIR_CURSOR], - ":\\database\\cursors", sizeof(g_defaults.dirs[DEFAULT_DIR_CURSOR])); - fill_pathname_expand_special(g_defaults.dirs[DEFAULT_DIR_PLAYLIST], - ":\\playlists", sizeof(g_defaults.dirs[DEFAULT_DIR_ASSETS])); - fill_pathname_expand_special(g_defaults.dirs[DEFAULT_DIR_RECORD_CONFIG], - ":\\config\\record", sizeof(g_defaults.dirs[DEFAULT_DIR_RECORD_CONFIG])); - fill_pathname_expand_special(g_defaults.dirs[DEFAULT_DIR_RECORD_OUTPUT], - ":\\recordings", sizeof(g_defaults.dirs[DEFAULT_DIR_RECORD_OUTPUT])); - fill_pathname_expand_special(g_defaults.dirs[DEFAULT_DIR_MENU_CONFIG], - ":\\config", sizeof(g_defaults.dirs[DEFAULT_DIR_MENU_CONFIG])); - fill_pathname_expand_special(g_defaults.dirs[DEFAULT_DIR_REMAP], - ":\\config\\remaps", sizeof(g_defaults.dirs[DEFAULT_DIR_REMAP])); - fill_pathname_expand_special(g_defaults.dirs[DEFAULT_DIR_WALLPAPERS], - ":\\assets\\wallpapers", sizeof(g_defaults.dirs[DEFAULT_DIR_WALLPAPERS])); - fill_pathname_expand_special(g_defaults.dirs[DEFAULT_DIR_THUMBNAILS], - ":\\thumbnails", sizeof(g_defaults.dirs[DEFAULT_DIR_THUMBNAILS])); - fill_pathname_expand_special(g_defaults.dirs[DEFAULT_DIR_OVERLAY], - ":\\overlays", sizeof(g_defaults.dirs[DEFAULT_DIR_OVERLAY])); - fill_pathname_expand_special(g_defaults.dirs[DEFAULT_DIR_CORE], - ":\\cores", sizeof(g_defaults.dirs[DEFAULT_DIR_CORE])); - fill_pathname_expand_special(g_defaults.dirs[DEFAULT_DIR_CORE_INFO], - ":\\info", sizeof(g_defaults.dirs[DEFAULT_DIR_CORE_INFO])); - fill_pathname_expand_special(g_defaults.dirs[DEFAULT_DIR_AUTOCONFIG], - ":\\autoconfig", sizeof(g_defaults.dirs[DEFAULT_DIR_AUTOCONFIG])); - fill_pathname_expand_special(g_defaults.dirs[DEFAULT_DIR_SHADER], - ":\\shaders", sizeof(g_defaults.dirs[DEFAULT_DIR_SHADER])); - fill_pathname_expand_special(g_defaults.dirs[DEFAULT_DIR_CORE_ASSETS], - ":\\downloads", sizeof(g_defaults.dirs[DEFAULT_DIR_CORE_ASSETS])); - fill_pathname_expand_special(g_defaults.dirs[DEFAULT_DIR_SCREENSHOT], - ":\\screenshots", sizeof(g_defaults.dirs[DEFAULT_DIR_SCREENSHOT])); - fill_pathname_expand_special(g_defaults.dirs[DEFAULT_DIR_SRAM], - ":\\saves", sizeof(g_defaults.dirs[DEFAULT_DIR_SRAM])); - fill_pathname_expand_special(g_defaults.dirs[DEFAULT_DIR_SAVESTATE], - ":\\states", sizeof(g_defaults.dirs[DEFAULT_DIR_SAVESTATE])); - fill_pathname_expand_special(g_defaults.dirs[DEFAULT_DIR_SYSTEM], - ":\\system", sizeof(g_defaults.dirs[DEFAULT_DIR_SYSTEM])); -#else +#if defined(__WINRT__) || defined(WINAPI_FAMILY) && WINAPI_FAMILY == WINAPI_FAMILY_PHONE_APP /* On UWP, we have to use the writable directory instead of the install directory */ fill_pathname_expand_special(g_defaults.dirs[DEFAULT_DIR_ASSETS], "~\\assets", sizeof(g_defaults.dirs[DEFAULT_DIR_ASSETS])); @@ -545,6 +498,55 @@ static void frontend_win32_environment_get(int *argc, char *argv[], "~\\states", sizeof(g_defaults.dirs[DEFAULT_DIR_SAVESTATE])); fill_pathname_expand_special(g_defaults.dirs[DEFAULT_DIR_SYSTEM], "~\\system", sizeof(g_defaults.dirs[DEFAULT_DIR_SYSTEM])); +#else + gfx_set_dwm(); + + fill_pathname_expand_special(g_defaults.dirs[DEFAULT_DIR_ASSETS], + ":\\assets", sizeof(g_defaults.dirs[DEFAULT_DIR_ASSETS])); + fill_pathname_expand_special(g_defaults.dirs[DEFAULT_DIR_AUDIO_FILTER], + ":\\filters\\audio", sizeof(g_defaults.dirs[DEFAULT_DIR_AUDIO_FILTER])); + fill_pathname_expand_special(g_defaults.dirs[DEFAULT_DIR_VIDEO_FILTER], + ":\\filters\\video", sizeof(g_defaults.dirs[DEFAULT_DIR_VIDEO_FILTER])); + fill_pathname_expand_special(g_defaults.dirs[DEFAULT_DIR_CHEATS], + ":\\cheats", sizeof(g_defaults.dirs[DEFAULT_DIR_CHEATS])); + fill_pathname_expand_special(g_defaults.dirs[DEFAULT_DIR_DATABASE], + ":\\database\\rdb", sizeof(g_defaults.dirs[DEFAULT_DIR_DATABASE])); + fill_pathname_expand_special(g_defaults.dirs[DEFAULT_DIR_CURSOR], + ":\\database\\cursors", sizeof(g_defaults.dirs[DEFAULT_DIR_CURSOR])); + fill_pathname_expand_special(g_defaults.dirs[DEFAULT_DIR_PLAYLIST], + ":\\playlists", sizeof(g_defaults.dirs[DEFAULT_DIR_ASSETS])); + fill_pathname_expand_special(g_defaults.dirs[DEFAULT_DIR_RECORD_CONFIG], + ":\\config\\record", sizeof(g_defaults.dirs[DEFAULT_DIR_RECORD_CONFIG])); + fill_pathname_expand_special(g_defaults.dirs[DEFAULT_DIR_RECORD_OUTPUT], + ":\\recordings", sizeof(g_defaults.dirs[DEFAULT_DIR_RECORD_OUTPUT])); + fill_pathname_expand_special(g_defaults.dirs[DEFAULT_DIR_MENU_CONFIG], + ":\\config", sizeof(g_defaults.dirs[DEFAULT_DIR_MENU_CONFIG])); + fill_pathname_expand_special(g_defaults.dirs[DEFAULT_DIR_REMAP], + ":\\config\\remaps", sizeof(g_defaults.dirs[DEFAULT_DIR_REMAP])); + fill_pathname_expand_special(g_defaults.dirs[DEFAULT_DIR_WALLPAPERS], + ":\\assets\\wallpapers", sizeof(g_defaults.dirs[DEFAULT_DIR_WALLPAPERS])); + fill_pathname_expand_special(g_defaults.dirs[DEFAULT_DIR_THUMBNAILS], + ":\\thumbnails", sizeof(g_defaults.dirs[DEFAULT_DIR_THUMBNAILS])); + fill_pathname_expand_special(g_defaults.dirs[DEFAULT_DIR_OVERLAY], + ":\\overlays", sizeof(g_defaults.dirs[DEFAULT_DIR_OVERLAY])); + fill_pathname_expand_special(g_defaults.dirs[DEFAULT_DIR_CORE], + ":\\cores", sizeof(g_defaults.dirs[DEFAULT_DIR_CORE])); + fill_pathname_expand_special(g_defaults.dirs[DEFAULT_DIR_CORE_INFO], + ":\\info", sizeof(g_defaults.dirs[DEFAULT_DIR_CORE_INFO])); + fill_pathname_expand_special(g_defaults.dirs[DEFAULT_DIR_AUTOCONFIG], + ":\\autoconfig", sizeof(g_defaults.dirs[DEFAULT_DIR_AUTOCONFIG])); + fill_pathname_expand_special(g_defaults.dirs[DEFAULT_DIR_SHADER], + ":\\shaders", sizeof(g_defaults.dirs[DEFAULT_DIR_SHADER])); + fill_pathname_expand_special(g_defaults.dirs[DEFAULT_DIR_CORE_ASSETS], + ":\\downloads", sizeof(g_defaults.dirs[DEFAULT_DIR_CORE_ASSETS])); + fill_pathname_expand_special(g_defaults.dirs[DEFAULT_DIR_SCREENSHOT], + ":\\screenshots", sizeof(g_defaults.dirs[DEFAULT_DIR_SCREENSHOT])); + fill_pathname_expand_special(g_defaults.dirs[DEFAULT_DIR_SRAM], + ":\\saves", sizeof(g_defaults.dirs[DEFAULT_DIR_SRAM])); + fill_pathname_expand_special(g_defaults.dirs[DEFAULT_DIR_SAVESTATE], + ":\\states", sizeof(g_defaults.dirs[DEFAULT_DIR_SAVESTATE])); + fill_pathname_expand_special(g_defaults.dirs[DEFAULT_DIR_SYSTEM], + ":\\system", sizeof(g_defaults.dirs[DEFAULT_DIR_SYSTEM])); #endif #ifdef HAVE_MENU @@ -589,7 +591,8 @@ static uint64_t frontend_win32_get_mem_used(void) #endif } -#ifndef __WINRT__ +#if defined(__WINRT__) || defined(WINAPI_FAMILY) && WINAPI_FAMILY == WINAPI_FAMILY_PHONE_APP +#else static void frontend_win32_attach_console(void) { #ifdef _WIN32 @@ -672,12 +675,12 @@ frontend_ctx_driver_t frontend_ctx_win32 = { NULL, /* get_sighandler_state */ NULL, /* set_sighandler_state */ NULL, /* destroy_sighandler_state */ -#ifndef __WINRT__ +#if defined(__WINRT__) || defined(WINAPI_FAMILY) && WINAPI_FAMILY == WINAPI_FAMILY_PHONE_APP + NULL, + NULL, +#else frontend_win32_attach_console, /* attach_console */ frontend_win32_detach_console, /* detach_console */ -#else - NULL, - NULL, #endif NULL, /* watch_path_for_changes */ NULL, /* check_for_path_changes */ diff --git a/libretro-common/features/features_cpu.c b/libretro-common/features/features_cpu.c index 046e880adf..51234c1878 100644 --- a/libretro-common/features/features_cpu.c +++ b/libretro-common/features/features_cpu.c @@ -485,7 +485,7 @@ unsigned cpu_features_get_core_amount(void) #if defined(_WIN32) && !defined(_XBOX) /* Win32 */ SYSTEM_INFO sysinfo; -#ifdef __WINRT__ +#if defined(__WINRT__) || defined(WINAPI_FAMILY) && WINAPI_FAMILY == WINAPI_FAMILY_PHONE_APP GetNativeSystemInfo(&sysinfo); #else GetSystemInfo(&sysinfo); diff --git a/menu/menu_displaylist.c b/menu/menu_displaylist.c index f3f6816416..8e2f2e8c16 100644 --- a/menu/menu_displaylist.c +++ b/menu/menu_displaylist.c @@ -359,7 +359,8 @@ static int menu_displaylist_parse_core_info(menu_displaylist_info_t *info) } } -#ifndef __WINRT__ +#if defined(__WINRT__) || defined(WINAPI_FAMILY) && WINAPI_FAMILY == WINAPI_FAMILY_PHONE_APP +#else if (settings->bools.menu_show_core_updater) menu_entries_append_enum(info->list, msg_hash_to_str(MENU_ENUM_LABEL_VALUE_CORE_DELETE), @@ -3104,7 +3105,8 @@ static unsigned menu_displaylist_parse_options( MENU_SETTING_ACTION, 0, 0); count++; #elif defined(HAVE_NETWORKING) -#ifndef __WINRT__ +#if defined(__WINRT__) || defined(WINAPI_FAMILY) && WINAPI_FAMILY == WINAPI_FAMILY_PHONE_APP +#else if (settings->bools.menu_show_core_updater) { menu_entries_append_enum(info->list, @@ -3624,7 +3626,7 @@ static unsigned menu_displaylist_parse_cores( ok = dir_list_append(str_list, path, info->exts, true, settings->bools.show_hidden_files, true, false); -#ifdef __WINRT__ +#if defined(__WINRT__) || defined(WINAPI_FAMILY) && WINAPI_FAMILY == WINAPI_FAMILY_PHONE_APP /* UWP: browse the optional packages for additional cores */ struct string_list *core_packages = string_list_new(); uwp_fill_installed_core_packages(core_packages); @@ -4175,7 +4177,9 @@ bool menu_displaylist_process(menu_displaylist_info_t *info) if (info->need_sort) file_list_sort_on_alt(info->list); -#if defined(HAVE_NETWORKING) && !defined(__WINRT__) +#if defined(HAVE_NETWORKING) +#if defined(__WINRT__) || defined(WINAPI_FAMILY) && WINAPI_FAMILY == WINAPI_FAMILY_PHONE_APP +#else if (settings->bools.menu_show_core_updater && !settings->bools.kiosk_mode_enable) { if (info->download_core) @@ -4193,6 +4197,7 @@ bool menu_displaylist_process(menu_displaylist_info_t *info) MENU_SETTING_ACTION, 0, 0); } } +#endif #endif if (info->push_builtin_cores)