From f788249c5906ede0835e6e23efa944392b7bb440 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Tue, 27 May 2014 17:13:53 +0200 Subject: [PATCH 01/15] (Menu) Add get_default_menu function for default settings --- config.def.h | 13 +++++++++++++ driver.c | 2 +- frontend/menu/disp/rmenu.c | 3 +++ frontend/menu/disp/rmenu_xui.cpp | 6 ++---- settings.c | 26 ++++++++++++++++++++++++++ 5 files changed, 45 insertions(+), 5 deletions(-) diff --git a/config.def.h b/config.def.h index b6c8564ccd..6ad6ce3fef 100644 --- a/config.def.h +++ b/config.def.h @@ -99,6 +99,11 @@ enum OSK_PS3, OSK_NULL, + + MENU_RGUI, + MENU_RMENU, + MENU_RMENU_XUI, + MENU_LAKKA, }; #if defined(HAVE_OPENGL) || defined(HAVE_OPENGLES) || defined(__CELLOS_LV2__) @@ -233,6 +238,14 @@ enum #define OSK_DEFAULT_DRIVER OSK_NULL #endif +#if defined(HAVE_RMENU) +#define MENU_DEFAULT_DRIVER MENU_RMENU +#elif defined(HAVE_RMENU_XUI) +#define MENU_DEFAULT_DRIVER MENU_RMENU_XUI +#else +#define MENU_DEFAULT_DRIVER MENU_RGUI +#endif + #if defined(XENON) || defined(_XBOX360) || defined(__CELLOS_LV2__) #define DEFAULT_ASPECT_RATIO 1.7778f #elif defined(_XBOX1) || defined(GEKKO) || defined(ANDROID) || defined(__QNX__) diff --git a/driver.c b/driver.c index 961adc7ad8..c38bd556ee 100644 --- a/driver.c +++ b/driver.c @@ -511,10 +511,10 @@ void global_init_drivers(void) { find_audio_driver(); find_input_driver(); + init_video_input(); #ifdef HAVE_MENU find_menu_driver(); #endif - init_video_input(); } void global_uninit_drivers(void) diff --git a/frontend/menu/disp/rmenu.c b/frontend/menu/disp/rmenu.c index 441ee134df..841773fb6f 100644 --- a/frontend/menu/disp/rmenu.c +++ b/frontend/menu/disp/rmenu.c @@ -454,6 +454,9 @@ static void *rmenu_init(void) { rgui_handle_t *rgui = (rgui_handle_t*)calloc(1, sizeof(*rgui)); + if (!rgui) + return NULL; + rmenu_init_assets(rgui); return rgui; diff --git a/frontend/menu/disp/rmenu_xui.cpp b/frontend/menu/disp/rmenu_xui.cpp index ff5b6021be..33f7831ec4 100644 --- a/frontend/menu/disp/rmenu_xui.cpp +++ b/frontend/menu/disp/rmenu_xui.cpp @@ -155,11 +155,9 @@ static void* rmenu_xui_init(void) HRESULT hr; rgui_handle_t *rgui = (rgui_handle_t*)calloc(1, sizeof(*rgui)); - if (rgui == NULL) - { - RARCH_ERR("Could not allocate RGUI handle.\n"); + + if (!rgui) return NULL; - } d3d_video_t *d3d= (d3d_video_t*)driver.video_data; diff --git a/settings.c b/settings.c index 0683c0c61a..b5387e824b 100644 --- a/settings.c +++ b/settings.c @@ -151,6 +151,25 @@ const char *config_get_default_input(void) } } +#ifdef HAVE_MENU +const char *config_get_default_menu(void) +{ + switch (MENU_DEFAULT_DRIVER) + { + case MENU_RGUI: + return "rgui"; + case MENU_RMENU: + return "rmenu"; + case MENU_RMENU_XUI: + return "rmenu_xui"; + case MENU_LAKKA: + return "lakka"; + default: + return "NULL"; + } +} +#endif + #ifdef HAVE_OSK const char *config_get_default_osk(void) { @@ -226,6 +245,9 @@ void config_set_defaults(void) const char *def_image = config_get_default_image(); const char *def_audio = config_get_default_audio(); const char *def_input = config_get_default_input(); +#ifdef HAVE_MENU + const char *def_menu = config_get_default_menu(); +#endif #ifdef HAVE_CAMERA const char *def_camera = config_get_default_camera(); @@ -254,6 +276,10 @@ void config_set_defaults(void) strlcpy(g_settings.input.driver, def_input, sizeof(g_settings.input.driver)); if (def_image) strlcpy(g_settings.image.driver, def_image, sizeof(g_settings.image.driver)); +#ifdef HAVE_MENU + if (def_menu) + strlcpy(g_settings.menu.driver, def_menu, sizeof(g_settings.menu.driver)); +#endif g_settings.load_dummy_on_core_shutdown = load_dummy_on_core_shutdown; From e48e9e1008af2d1da523270bcc8c68c0d67092e1 Mon Sep 17 00:00:00 2001 From: Morgane Alonso Date: Fri, 23 May 2014 17:53:49 +0200 Subject: [PATCH 02/15] (Lakka) Add PC Engine icons --- media/lakka/mednafen_pce_fast-game.png | Bin 0 -> 1449 bytes media/lakka/mednafen_pce_fast.png | Bin 0 -> 6602 bytes 2 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 media/lakka/mednafen_pce_fast-game.png create mode 100644 media/lakka/mednafen_pce_fast.png diff --git a/media/lakka/mednafen_pce_fast-game.png b/media/lakka/mednafen_pce_fast-game.png new file mode 100644 index 0000000000000000000000000000000000000000..0b812a52a9ce13ec09174bf4ef622d51d2af8ec3 GIT binary patch literal 1449 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 Date: Tue, 27 May 2014 17:40:58 +0200 Subject: [PATCH 03/15] (Lakka) Rename mednafen_pce_fast-game to mednafen_pce_fast-content --- ..._fast-game.png => mednafen_pce_fast-content.png} | Bin 1 file changed, 0 insertions(+), 0 deletions(-) rename media/lakka/{mednafen_pce_fast-game.png => mednafen_pce_fast-content.png} (100%) diff --git a/media/lakka/mednafen_pce_fast-game.png b/media/lakka/mednafen_pce_fast-content.png similarity index 100% rename from media/lakka/mednafen_pce_fast-game.png rename to media/lakka/mednafen_pce_fast-content.png From 8fc357647dca0787129c7088ccb69922d68754af Mon Sep 17 00:00:00 2001 From: twinaphex Date: Tue, 27 May 2014 19:05:04 +0200 Subject: [PATCH 04/15] (RARCH_CONSOLE) Add find_image_driver() to global_init_drivers --- driver.c | 1 + 1 file changed, 1 insertion(+) diff --git a/driver.c b/driver.c index c38bd556ee..2266b8cd25 100644 --- a/driver.c +++ b/driver.c @@ -512,6 +512,7 @@ void global_init_drivers(void) find_audio_driver(); find_input_driver(); init_video_input(); + find_image_driver(); #ifdef HAVE_MENU find_menu_driver(); #endif From 1416e47195a274af62aa1852776e49afdf5e2f6b Mon Sep 17 00:00:00 2001 From: twinaphex Date: Tue, 27 May 2014 19:21:44 +0200 Subject: [PATCH 05/15] (Console) Should bring up menu context in case it fails the first time --- driver-contexts/menu_driver.c | 2 +- frontend/frontend.c | 16 ++++++++++++++-- frontend/menu/menu_common.c | 17 ++++++++++------- 3 files changed, 25 insertions(+), 10 deletions(-) diff --git a/driver-contexts/menu_driver.c b/driver-contexts/menu_driver.c index 6f4bbd572a..3c622999ae 100644 --- a/driver-contexts/menu_driver.c +++ b/driver-contexts/menu_driver.c @@ -76,7 +76,7 @@ void find_next_menu_driver(void) RARCH_WARN("Couldn't find any next menu driver (current one: \"%s\").\n", g_settings.menu.driver); } -static void find_menu_driver(void) +void find_menu_driver(void) { int i = find_menu_driver_index(g_settings.menu.driver); if (i >= 0) diff --git a/frontend/frontend.c b/frontend/frontend.c index b9126b1920..6862a151ea 100644 --- a/frontend/frontend.c +++ b/frontend/frontend.c @@ -373,8 +373,20 @@ returntype main_entry(signature()) if (!driver.menu) { - RARCH_ERR("Couldn't initialize menu, exiting...\n"); - returnfunc(); + RARCH_ERR("Couldn't initialize menu.\n"); + + if (!driver.menu_ctx) + { + RARCH_WARN("Trying to bring up menu context interface.\n"); + find_menu_driver(); + } + + if (!(driver.menu = (rgui_handle_t*)menu_init())) + { + RARCH_ERR("Couldn't initialize menu (2nd attempt).\n"); + rarch_fail(1, "main_entry()"); + returnfunc(); + } } if (driver.frontend_ctx && driver.frontend_ctx->process_args) diff --git a/frontend/menu/menu_common.c b/frontend/menu/menu_common.c index a036934260..2667b2f4bb 100644 --- a/frontend/menu/menu_common.c +++ b/frontend/menu/menu_common.c @@ -316,16 +316,19 @@ void *menu_init(void) { rgui_handle_t *rgui; - if (!driver.menu_ctx) - return NULL; + rgui = NULL; - rgui = (rgui_handle_t*)driver.menu_ctx->init(); + if (!driver.menu_ctx) + { + RARCH_ERR("menu_init() - menu context interface not initialized.\n"); + return NULL; + } + + if (driver.menu_ctx->init) + rgui = (rgui_handle_t*)driver.menu_ctx->init(); if (!rgui) - { - RARCH_ERR("Could not initialize menu.\n"); - rarch_fail(1, "menu_init()"); - } + return NULL; strlcpy(g_settings.menu.driver, driver.menu_ctx->ident, sizeof(g_settings.menu.driver)); From 5da884036e1bc26c73ec125194db03b7c3d41477 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Tue, 27 May 2014 21:38:30 +0200 Subject: [PATCH 06/15] (PS3) Starts to somewhat get back to booting - still a lot of breakage to go through --- driver.h | 3 +++ frontend/menu/menu_common.c | 10 ++++++++++ gfx/image_context.c | 8 ++++++-- 3 files changed, 19 insertions(+), 2 deletions(-) diff --git a/driver.h b/driver.h index d7e92a21b0..43fc5365f2 100644 --- a/driver.h +++ b/driver.h @@ -580,6 +580,8 @@ void find_prev_location_driver(void); void find_next_location_driver(void); #endif +void find_image_driver(void); + void driver_set_monitor_refresh_rate(float hz); bool driver_monitor_fps_statistics(double *refresh_rate, double *deviation, unsigned *sample_points); void driver_set_nonblock_state(bool nonblock); @@ -626,6 +628,7 @@ void driver_location_set_interval(unsigned interval_msecs, unsigned interval_dis const void *menu_ctx_find_driver(const char *ident); // Finds driver with ident. Does not initialize. void find_prev_menu_driver(void); void find_next_menu_driver(void); +void find_menu_driver(void); #endif // Used by RETRO_ENVIRONMENT_SET_SYSTEM_AV_INFO diff --git a/frontend/menu/menu_common.c b/frontend/menu/menu_common.c index 2667b2f4bb..2fde834159 100644 --- a/frontend/menu/menu_common.c +++ b/frontend/menu/menu_common.c @@ -324,6 +324,16 @@ void *menu_init(void) return NULL; } + if (!driver.image) + { + RARCH_ERR("Image driver not initialized.\n"); + RARCH_WARN("Trying to bring up image driver interface.\n"); + find_image_driver(); + + if (!driver.image) + RARCH_ERR("Still couldn't initialize image driver.\n"); + } + if (driver.menu_ctx->init) rgui = (rgui_handle_t*)driver.menu_ctx->init(); diff --git a/gfx/image_context.c b/gfx/image_context.c index 06a4d17836..ed042003cc 100644 --- a/gfx/image_context.c +++ b/gfx/image_context.c @@ -59,12 +59,16 @@ void find_image_driver(void) else { unsigned d; - RARCH_ERR("Couldn't find any image driver named \"%s\"\n", g_settings.image.driver); + RARCH_WARN("Couldn't find any image driver named \"%s\"\n", g_settings.image.driver); RARCH_LOG_OUTPUT("Available image drivers are:\n"); for (d = 0; image_ctx_drivers[d]; d++) RARCH_LOG_OUTPUT("\t%s\n", image_ctx_drivers[d]->ident); + RARCH_WARN("Going to default to first image driver...\n"); - rarch_fail(1, "find_image_driver()"); + driver.image = image_ctx_drivers[0]; + + if (!driver.image) + rarch_fail(1, "find_image_driver()"); } } From 0ea15de950b610253c59b031714ebf819f8486ac Mon Sep 17 00:00:00 2001 From: twinaphex Date: Tue, 27 May 2014 21:55:54 +0200 Subject: [PATCH 07/15] (GL) Force fp_fbo to false for PS3 for now --- driver.c | 2 +- gfx/gl.c | 17 +++++++++++++++-- 2 files changed, 16 insertions(+), 3 deletions(-) diff --git a/driver.c b/driver.c index 2266b8cd25..a2e8ef7199 100644 --- a/driver.c +++ b/driver.c @@ -511,11 +511,11 @@ void global_init_drivers(void) { find_audio_driver(); find_input_driver(); - init_video_input(); find_image_driver(); #ifdef HAVE_MENU find_menu_driver(); #endif + init_video_input(); } void global_uninit_drivers(void) diff --git a/gfx/gl.c b/gfx/gl.c index 474235f047..acac14be9a 100644 --- a/gfx/gl.c +++ b/gfx/gl.c @@ -205,6 +205,7 @@ static bool check_fbo_proc(gl_t *gl) static bool gl_shader_init(void *data) { + bool ret; gl_t *gl = (gl_t*)data; const gl_shader_backend_t *backend = NULL; @@ -214,6 +215,8 @@ static bool gl_shader_init(void *data) enum rarch_shader_type type = gfx_shader_parse_type(shader_path, gl->core_context ? RARCH_SHADER_GLSL : DEFAULT_SHADER_TYPE); + ret = 0; + if (type == RARCH_SHADER_NONE) { RARCH_LOG("[GL]: Not loading any shader.\n"); @@ -256,7 +259,10 @@ static bool gl_shader_init(void *data) #endif gl->shader = backend; - bool ret = gl->shader->init(gl, shader_path); + + if (gl->shader && gl->shader->init) + ret = gl->shader->init(gl, shader_path); + if (!ret) { RARCH_ERR("[GL]: Failed to init shader, falling back to stock.\n"); @@ -270,6 +276,9 @@ static inline void gl_shader_deinit(void *data) { gl_t *gl = (gl_t*)data; + if (!gl) + return; + if (gl->shader) gl->shader->deinit(); gl->shader = NULL; @@ -295,7 +304,7 @@ static void gl_set_coords(const struct gl_coords *coords) static void gl_disable_client_arrays(gl_t *gl) { - if (gl->core_context) + if (!gl || gl->core_context) return; glClientActiveTexture(GL_TEXTURE1); @@ -1826,7 +1835,11 @@ static bool resolve_extensions(gl_t *gl) #else #ifdef HAVE_FBO // Float FBO is core in 3.2. +#ifdef HAVE_PSGL + gl->has_fp_fbo = false; // FIXME - rewrite GL implementation +#else gl->has_fp_fbo = gl->core_context || gl_query_extension(gl, "ARB_texture_float"); +#endif gl->has_srgb_fbo = gl->core_context || (gl_query_extension(gl, "EXT_texture_sRGB") && gl_query_extension(gl, "ARB_framebuffer_sRGB")); #endif #endif From c5f43963c0b9c8b404161522f3122851b7687563 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Tue, 27 May 2014 22:15:25 +0200 Subject: [PATCH 08/15] (PS3) Add raw PSGL ifdefs --- Makefile.ps3 | 2 +- gfx/gl.c | 2 +- gfx/gl_common.h | 11 +++++++++++ 3 files changed, 13 insertions(+), 2 deletions(-) diff --git a/Makefile.ps3 b/Makefile.ps3 index 92de0db009..fa3c0b125b 100644 --- a/Makefile.ps3 +++ b/Makefile.ps3 @@ -12,7 +12,7 @@ RMENU_IMG_DIR := media/rmenu DOWNLOAD_SHADERS = 1 STRIPPING_ENABLE = 0 DEBUG = 0 -HAVE_GCMGL = 1 +HAVE_GCMGL = 0 HAVE_LOGGER = 0 HAVE_FREETYPE = 0 HAVE_RLAUNCH = 0 diff --git a/gfx/gl.c b/gfx/gl.c index acac14be9a..fddfa99de1 100644 --- a/gfx/gl.c +++ b/gfx/gl.c @@ -744,7 +744,7 @@ static bool gl_init_hw_render(gl_t *gl, unsigned width, unsigned height) if (stencil) { -#if defined(HAVE_OPENGLES2) || defined(OSX_PPC) +#if defined(HAVE_OPENGLES2) || defined(HAVE_OPENGLES1) || defined(OSX_PPC) // GLES2 is a bit weird, as always. :P // There's no GL_DEPTH_STENCIL_ATTACHMENT like in desktop GL. glFramebufferRenderbuffer(RARCH_GL_FRAMEBUFFER, RARCH_GL_DEPTH_ATTACHMENT, diff --git a/gfx/gl_common.h b/gfx/gl_common.h index cfe5a0f0ec..3a8fb87977 100644 --- a/gfx/gl_common.h +++ b/gfx/gl_common.h @@ -86,6 +86,11 @@ #define RARCH_GL_DEPTH24_STENCIL8 GL_DEPTH24_STENCIL8_EXT #define RARCH_GL_DEPTH_ATTACHMENT GL_DEPTH_ATTACHMENT_EXT #define RARCH_GL_STENCIL_ATTACHMENT GL_STENCIL_ATTACHMENT_EXT +#elif defined(HAVE_PSGL) && !defined(HAVE_GCMGL) +#define RARCH_GL_RENDERBUFFER GL_RENDERBUFFER_OES +#define RARCH_GL_DEPTH24_STENCIL8 GL_DEPTH24_STENCIL8_SCE +#define RARCH_GL_DEPTH_ATTACHMENT GL_DEPTH_ATTACHMENT_OES +#define RARCH_GL_STENCIL_ATTACHMENT GL_STENCIL_ATTACHMENT_OES #else #define RARCH_GL_RENDERBUFFER GL_RENDERBUFFER #define RARCH_GL_DEPTH24_STENCIL8 GL_DEPTH24_STENCIL8 @@ -95,10 +100,16 @@ #ifdef OSX_PPC #define RARCH_GL_MAX_RENDERBUFFER_SIZE GL_MAX_RENDERBUFFER_SIZE_EXT +#elif defined(HAVE_PSGL) && !defined(HAVE_GCMGL) +#define RARCH_GL_MAX_RENDERBUFFER_SIZE GL_MAX_RENDERBUFFER_SIZE_OES #else #define RARCH_GL_MAX_RENDERBUFFER_SIZE GL_MAX_RENDERBUFFER_SIZE #endif +#if defined(HAVE_PSGL) && !defined(HAVE_GCMGL) +#define glGenerateMipmap glGenerateMipmapOES +#endif + static inline bool gl_check_error(void) { int error = glGetError(); From 961c1189fdd7a2484ec99ddf1cdb6a965ccb067e Mon Sep 17 00:00:00 2001 From: twinaphex Date: Tue, 27 May 2014 22:27:16 +0200 Subject: [PATCH 09/15] (PSGL) More PSGL ifdefs --- gfx/gl.c | 7 ++----- gfx/gl_common.h | 8 ++++++++ 2 files changed, 10 insertions(+), 5 deletions(-) diff --git a/gfx/gl.c b/gfx/gl.c index fddfa99de1..8504708ca7 100644 --- a/gfx/gl.c +++ b/gfx/gl.c @@ -196,9 +196,6 @@ static bool check_fbo_proc(gl_t *gl) #else #define check_fbo_proc(gl) (true) #endif -#if defined(__APPLE__) || defined(HAVE_PSGL) -#define GL_RGBA32F GL_RGBA32F_ARB -#endif #endif ////////////////// Shaders @@ -525,7 +522,7 @@ static void gl_create_fbo_textures(void *data) RARCH_ERR("[GL]: Floating-point FBO was requested, but is not supported. Falling back to UNORM.\n"); } -#ifndef HAVE_PSGL +#ifndef HAVE_OPENGLES if (srgb_fbo && gl->has_srgb_fbo) { RARCH_LOG("[GL]: FBO pass #%d is sRGB.\n", i); @@ -1835,7 +1832,7 @@ static bool resolve_extensions(gl_t *gl) #else #ifdef HAVE_FBO // Float FBO is core in 3.2. -#ifdef HAVE_PSGL +#ifdef HAVE_GCMGL gl->has_fp_fbo = false; // FIXME - rewrite GL implementation #else gl->has_fp_fbo = gl->core_context || gl_query_extension(gl, "ARB_texture_float"); diff --git a/gfx/gl_common.h b/gfx/gl_common.h index 3a8fb87977..b67dc8d5c1 100644 --- a/gfx/gl_common.h +++ b/gfx/gl_common.h @@ -110,6 +110,14 @@ #define glGenerateMipmap glGenerateMipmapOES #endif +#ifdef HAVE_FBO + +#if defined(__APPLE__) || defined(HAVE_PSGL) +#define GL_RGBA32F GL_RGBA32F_ARB +#endif + +#endif + static inline bool gl_check_error(void) { int error = glGetError(); From 8a656cfccca5cf193fc7f2ec8c7696faab4cbe40 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jean-Andr=C3=A9=20Santoni?= Date: Tue, 27 May 2014 22:43:04 +0200 Subject: [PATCH 10/15] (Lakka) Fix a segfault in items_init --- frontend/menu/disp/lakka.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/frontend/menu/disp/lakka.c b/frontend/menu/disp/lakka.c index c0972844bb..740345ef5a 100644 --- a/frontend/menu/disp/lakka.c +++ b/frontend/menu/disp/lakka.c @@ -1118,10 +1118,10 @@ static void lakka_init_items(int i, menu_category_t *category, core_info_t *info menu_item_t *item; n = category->num_items; - item = (menu_item_t*)&category->items[n]; category->num_items++; category->items = (menu_item_t*)realloc(category->items, category->num_items * sizeof(menu_item_t)); + item = (menu_item_t*)&category->items[n]; strlcpy(item->name, path_basename(list->elems[j].data), sizeof(item->name)); strlcpy(item->rom, list->elems[j].data, sizeof(item->rom)); From 49660c9bc094011f47d2766a4cdfbcf4cf5e0efe Mon Sep 17 00:00:00 2001 From: twinaphex Date: Wed, 28 May 2014 03:38:52 +0200 Subject: [PATCH 11/15] (Win) Build fix --- driver.h | 2 -- 1 file changed, 2 deletions(-) diff --git a/driver.h b/driver.h index 43fc5365f2..f276a6a3a2 100644 --- a/driver.h +++ b/driver.h @@ -580,8 +580,6 @@ void find_prev_location_driver(void); void find_next_location_driver(void); #endif -void find_image_driver(void); - void driver_set_monitor_refresh_rate(float hz); bool driver_monitor_fps_statistics(double *refresh_rate, double *deviation, unsigned *sample_points); void driver_set_nonblock_state(bool nonblock); From ac4377ad2385eeae4b7810187d634f2572da1e83 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Wed, 28 May 2014 04:10:34 +0200 Subject: [PATCH 12/15] (Android) Get rid of the warning in gfx/shader_parse.c --- gfx/shader_parse.c | 3 --- 1 file changed, 3 deletions(-) diff --git a/gfx/shader_parse.c b/gfx/shader_parse.c index 29f365284f..59c1951f13 100644 --- a/gfx/shader_parse.c +++ b/gfx/shader_parse.c @@ -641,10 +641,7 @@ void gfx_shader_write_conf_cgp(config_file_t *conf, const struct gfx_shader *sha config_set_string(conf, "parameters", parameters); for (i = 0; i < shader->num_parameters; i++) - { - char key[64]; config_set_float(conf, shader->parameters[i].id, shader->parameters[i].current); - } } if (shader->luts) From 152e022b5b2c4a6934d275e18977dbe8018ff717 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Wed, 28 May 2014 04:15:52 +0200 Subject: [PATCH 13/15] (Android) Fix build --- audio/filters/phaser.c | 4 ++-- audio/filters/wahwah.c | 4 ++-- griffin/griffin.c | 7 +++++-- 3 files changed, 9 insertions(+), 6 deletions(-) diff --git a/audio/filters/phaser.c b/audio/filters/phaser.c index 76262f56b7..d70b974613 100644 --- a/audio/filters/phaser.c +++ b/audio/filters/phaser.c @@ -20,7 +20,7 @@ #include #define phaserlfoshape 4.0 -#define lfoskipsamples 20 +#define phaserlfoskipsamples 20 #ifndef M_PI #define M_PI 3.1415926535897932384626433832795 @@ -67,7 +67,7 @@ static void phaser_process(void *data, struct dspfilter_output *output, for (c = 0; c < 2; c++) m[c] = in[c] + ph->fbout[c] * ph->fb * 0.01f; - if ((ph->skipcount++ % lfoskipsamples) == 0) + if ((ph->skipcount++ % phaserlfoskipsamples) == 0) { ph->gain = 0.5 * (1.0 + cos(ph->skipcount * ph->lfoskip + ph->phase)); ph->gain = (exp(ph->gain * phaserlfoshape) - 1.0) / (exp(phaserlfoshape) - 1); diff --git a/audio/filters/wahwah.c b/audio/filters/wahwah.c index 6d05ae8335..27055ee3f3 100644 --- a/audio/filters/wahwah.c +++ b/audio/filters/wahwah.c @@ -19,7 +19,7 @@ #include #include -#define lfoskipsamples 30 +#define wahwahlfoskipsamples 30 #ifndef M_PI #define M_PI 3.1415926535897932384626433832795 @@ -59,7 +59,7 @@ static void wahwah_process(void *data, struct dspfilter_output *output, { float in[2] = { out[0], out[1] }; - if ((wah->skipcount++ % lfoskipsamples) == 0) + if ((wah->skipcount++ % wahwahlfoskipsamples) == 0) { float frequency = (1.0 + cos(wah->skipcount * wah->lfoskip + wah->phase)) / 2.0; frequency = frequency * wah->depth * (1.0 - wah->freqofs) + wah->freqofs; diff --git a/griffin/griffin.c b/griffin/griffin.c index e0b6c7c8e5..930a7d59a4 100644 --- a/griffin/griffin.c +++ b/griffin/griffin.c @@ -480,9 +480,12 @@ FILTERS #include "../gfx/filters/lq2x.c" #include "../gfx/filters/phosphor2x.c" -#include "../audio/filters/panning.c" -#include "../audio/filters/iir.c" #include "../audio/filters/echo.c" +#include "../audio/filters/iir.c" +#include "../audio/filters/panning.c" +#include "../audio/filters/phaser.c" +#include "../audio/filters/reverb.c" +#include "../audio/filters/wahwah.c" #endif /*============================================================ DYNAMIC From db189e1094225c54014f8d60de9ffdaf20ea98b6 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Wed, 28 May 2014 08:44:38 +0200 Subject: [PATCH 14/15] init_drivers - if driver.image is NULL, set it --- driver.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/driver.c b/driver.c index a2e8ef7199..d470eaf720 100644 --- a/driver.c +++ b/driver.c @@ -579,6 +579,10 @@ void init_drivers(void) adjust_system_rates(); g_extern.frame_count = 0; + + if (!driver.image) + find_image_driver(); + init_video_input(); if (!driver.video_cache_context_ack && g_extern.system.hw_render_callback.context_reset) From b2d32fed3eda1728a80bbf7b1ebb444d873d5f5f Mon Sep 17 00:00:00 2001 From: twinaphex Date: Wed, 28 May 2014 08:48:49 +0200 Subject: [PATCH 15/15] Place find_image_driver above adjust_system_rates in init_drivers --- driver.c | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/driver.c b/driver.c index d470eaf720..1aa3280c74 100644 --- a/driver.c +++ b/driver.c @@ -576,13 +576,12 @@ void init_drivers(void) driver.osk_data_own = !driver.osk_data; #endif - adjust_system_rates(); - - g_extern.frame_count = 0; - if (!driver.image) find_image_driver(); + adjust_system_rates(); + + g_extern.frame_count = 0; init_video_input(); if (!driver.video_cache_context_ack && g_extern.system.hw_render_callback.context_reset)