From 49e99266f8c7fe363c6b33aa85a41b6516eb8a72 Mon Sep 17 00:00:00 2001
From: Autechre <libretro@gmail.com>
Date: Fri, 29 Oct 2021 19:43:37 +0200
Subject: [PATCH] Move frontend code to frontend_driver.c (#13170)

---
 frontend/frontend_driver.c | 316 ++++++++++++++++++++++++++++++++++++
 frontend/frontend_driver.h |   7 +
 retroarch.c                | 319 +------------------------------------
 retroarch_data.h           |   1 -
 4 files changed, 329 insertions(+), 314 deletions(-)

diff --git a/frontend/frontend_driver.c b/frontend/frontend_driver.c
index 16bd758595..46d3058cc4 100644
--- a/frontend/frontend_driver.c
+++ b/frontend/frontend_driver.c
@@ -134,6 +134,13 @@ static frontend_ctx_driver_t *frontend_ctx_drivers[] = {
    NULL
 };
 
+static frontend_state_t frontend_driver_st = { 0 };
+
+frontend_state_t *frontend_state_get_ptr(void)
+{
+   return &frontend_driver_st;
+}
+
 /**
  * frontend_ctx_find_driver:
  * @ident               : Identifier name of driver to find.
@@ -275,3 +282,312 @@ bool frontend_driver_get_salamander_basename(char *s, size_t len)
 
 #endif
 }
+
+
+frontend_ctx_driver_t *frontend_get_ptr(void)
+{
+   frontend_state_t *frontend_st = &frontend_driver_st;
+   return frontend_st->current_frontend_ctx;
+}
+
+int frontend_driver_parse_drive_list(void *data, bool load_content)
+{
+   frontend_state_t *frontend_st   = &frontend_driver_st;
+   frontend_ctx_driver_t *frontend = frontend_st->current_frontend_ctx;
+
+   if (!frontend->parse_drive_list)
+      return -1;
+   return frontend->parse_drive_list(data, load_content);
+}
+
+void frontend_driver_content_loaded(void)
+{
+   frontend_state_t *frontend_st   = &frontend_driver_st;
+   frontend_ctx_driver_t *frontend = frontend_st->current_frontend_ctx;
+
+   if (!frontend->content_loaded)
+      return;
+   frontend->content_loaded();
+}
+
+bool frontend_driver_has_fork(void)
+{
+   frontend_state_t *frontend_st   = &frontend_driver_st;
+   frontend_ctx_driver_t *frontend = frontend_st->current_frontend_ctx;
+
+   if (!frontend->set_fork)
+      return false;
+   return true;
+}
+
+bool frontend_driver_set_fork(enum frontend_fork fork_mode)
+{
+   frontend_state_t *frontend_st   = &frontend_driver_st;
+   frontend_ctx_driver_t *frontend = frontend_st->current_frontend_ctx;
+
+   if (!frontend_driver_has_fork())
+      return false;
+   return frontend->set_fork(fork_mode);
+}
+
+void frontend_driver_process_args(int *argc, char *argv[])
+{
+   frontend_state_t *frontend_st   = &frontend_driver_st;
+   frontend_ctx_driver_t *frontend = frontend_st->current_frontend_ctx;
+   if (frontend->process_args)
+      frontend->process_args(argc, argv);
+}
+
+bool frontend_driver_is_inited(void)
+{
+   frontend_state_t *frontend_st   = &frontend_driver_st;
+   frontend_ctx_driver_t *frontend = frontend_st->current_frontend_ctx;
+   return frontend != NULL;
+}
+
+void frontend_driver_init_first(void *args)
+{
+   frontend_state_t *frontend_st     = &frontend_driver_st;
+   frontend_st->current_frontend_ctx = (frontend_ctx_driver_t*)
+      frontend_ctx_init_first();
+
+   if (     frontend_st->current_frontend_ctx 
+         && frontend_st->current_frontend_ctx->init)
+      frontend_st->current_frontend_ctx->init(args);
+}
+
+void frontend_driver_free(void)
+{
+   frontend_state_t *frontend_st     = &frontend_driver_st;
+
+   frontend_st->current_frontend_ctx = NULL;
+}
+
+bool frontend_driver_has_get_video_driver_func(void)
+{
+   frontend_state_t *frontend_st   = &frontend_driver_st;
+   frontend_ctx_driver_t *frontend = frontend_st->current_frontend_ctx;
+   if (!frontend->get_video_driver)
+      return false;
+   return true;
+}
+
+const struct video_driver *frontend_driver_get_video_driver(void)
+{
+   frontend_state_t *frontend_st   = &frontend_driver_st;
+   frontend_ctx_driver_t *frontend = frontend_st->current_frontend_ctx;
+   if (!frontend->get_video_driver)
+      return NULL;
+   return frontend->get_video_driver();
+}
+
+void frontend_driver_exitspawn(char *s, size_t len, char *args)
+{
+   frontend_state_t *frontend_st   = &frontend_driver_st;
+   frontend_ctx_driver_t *frontend = frontend_st->current_frontend_ctx;
+   if (frontend->exitspawn)
+      frontend->exitspawn(s, len, args);
+}
+
+void frontend_driver_deinit(void *args)
+{
+   frontend_state_t *frontend_st   = &frontend_driver_st;
+   frontend_ctx_driver_t *frontend = frontend_st->current_frontend_ctx;
+   if (frontend->deinit)
+      frontend->deinit(args);
+}
+
+void frontend_driver_shutdown(bool a)
+{
+   frontend_state_t *frontend_st   = &frontend_driver_st;
+   frontend_ctx_driver_t *frontend = frontend_st->current_frontend_ctx;
+   if (frontend->shutdown)
+      frontend->shutdown(a);
+}
+
+enum frontend_architecture frontend_driver_get_cpu_architecture(void)
+{
+   frontend_state_t *frontend_st   = &frontend_driver_st;
+   frontend_ctx_driver_t *frontend = frontend_st->current_frontend_ctx;
+   if (!frontend->get_architecture)
+      return FRONTEND_ARCH_NONE;
+   return frontend->get_architecture();
+}
+
+const void *frontend_driver_get_cpu_architecture_str(
+      char *architecture, size_t size)
+{
+   frontend_state_t *frontend_st   = &frontend_driver_st;
+   frontend_ctx_driver_t *frontend = frontend_st->current_frontend_ctx;
+   enum frontend_architecture arch = frontend_driver_get_cpu_architecture();
+
+   switch (arch)
+   {
+      case FRONTEND_ARCH_X86:
+         strcpy_literal(architecture, "x86");
+         break;
+      case FRONTEND_ARCH_X86_64:
+         strcpy_literal(architecture, "x64");
+         break;
+      case FRONTEND_ARCH_PPC:
+         strcpy_literal(architecture, "PPC");
+         break;
+      case FRONTEND_ARCH_ARM:
+         strcpy_literal(architecture, "ARM");
+         break;
+      case FRONTEND_ARCH_ARMV7:
+         strcpy_literal(architecture, "ARMv7");
+         break;
+      case FRONTEND_ARCH_ARMV8:
+         strcpy_literal(architecture, "ARMv8");
+         break;
+      case FRONTEND_ARCH_MIPS:
+         strcpy_literal(architecture, "MIPS");
+         break;
+      case FRONTEND_ARCH_TILE:
+         strcpy_literal(architecture, "Tilera");
+         break;
+      case FRONTEND_ARCH_NONE:
+      default:
+         strcpy_literal(architecture, "N/A");
+         break;
+   }
+
+   return frontend;
+}
+
+uint64_t frontend_driver_get_total_memory(void)
+{
+   frontend_state_t *frontend_st   = &frontend_driver_st;
+   frontend_ctx_driver_t *frontend = frontend_st->current_frontend_ctx;
+   if (!frontend->get_total_mem)
+      return 0;
+   return frontend->get_total_mem();
+}
+
+uint64_t frontend_driver_get_free_memory(void)
+{
+   frontend_state_t *frontend_st   = &frontend_driver_st;
+   frontend_ctx_driver_t *frontend = frontend_st->current_frontend_ctx;
+   if (!frontend->get_free_mem)
+      return 0;
+   return frontend->get_free_mem();
+}
+
+void frontend_driver_install_signal_handler(void)
+{
+   frontend_state_t *frontend_st   = &frontend_driver_st;
+   frontend_ctx_driver_t *frontend = frontend_st->current_frontend_ctx;
+   if (frontend->install_signal_handler)
+      frontend->install_signal_handler();
+}
+
+int frontend_driver_get_signal_handler_state(void)
+{
+   frontend_state_t *frontend_st   = &frontend_driver_st;
+   frontend_ctx_driver_t *frontend = frontend_st->current_frontend_ctx;
+   if (!frontend->get_signal_handler_state)
+      return -1;
+   return frontend->get_signal_handler_state();
+}
+
+void frontend_driver_set_signal_handler_state(int value)
+{
+   frontend_state_t *frontend_st   = &frontend_driver_st;
+   frontend_ctx_driver_t *frontend = frontend_st->current_frontend_ctx;
+   if (frontend->set_signal_handler_state)
+      frontend->set_signal_handler_state(value);
+}
+
+void frontend_driver_attach_console(void)
+{
+   frontend_state_t *frontend_st   = &frontend_driver_st;
+   frontend_ctx_driver_t *frontend = frontend_st->current_frontend_ctx;
+   if (frontend->attach_console)
+      frontend->attach_console();
+}
+
+void frontend_driver_set_screen_brightness(int value)
+{
+   frontend_state_t *frontend_st   = &frontend_driver_st;
+   frontend_ctx_driver_t *frontend = frontend_st->current_frontend_ctx;
+   if (frontend->set_screen_brightness)
+      frontend->set_screen_brightness(value);
+}
+
+bool frontend_driver_can_set_screen_brightness(void)
+{
+   frontend_state_t *frontend_st   = &frontend_driver_st;
+   frontend_ctx_driver_t *frontend = frontend_st->current_frontend_ctx;
+   return (frontend && frontend->set_screen_brightness);
+}
+
+void frontend_driver_detach_console(void)
+{
+   frontend_state_t *frontend_st   = &frontend_driver_st;
+   frontend_ctx_driver_t *frontend = frontend_st->current_frontend_ctx;
+   if (frontend->detach_console)
+      frontend->detach_console();
+}
+
+void frontend_driver_destroy_signal_handler_state(void)
+{
+   frontend_state_t *frontend_st   = &frontend_driver_st;
+   frontend_ctx_driver_t *frontend = frontend_st->current_frontend_ctx;
+   if (frontend->destroy_signal_handler_state)
+      frontend->destroy_signal_handler_state();
+}
+
+bool frontend_driver_can_watch_for_changes(void)
+{
+   frontend_state_t *frontend_st   = &frontend_driver_st;
+   frontend_ctx_driver_t *frontend = frontend_st->current_frontend_ctx;
+   if (!frontend->watch_path_for_changes)
+      return false;
+   return true;
+}
+
+void frontend_driver_watch_path_for_changes(
+      struct string_list *list, int flags,
+      path_change_data_t **change_data)
+{
+   frontend_state_t *frontend_st   = &frontend_driver_st;
+   frontend_ctx_driver_t *frontend = frontend_st->current_frontend_ctx;
+   if (frontend->watch_path_for_changes)
+      frontend->watch_path_for_changes(list, flags, change_data);
+}
+
+bool frontend_driver_check_for_path_changes(path_change_data_t *change_data)
+{
+   frontend_state_t *frontend_st   = &frontend_driver_st;
+   frontend_ctx_driver_t *frontend = frontend_st->current_frontend_ctx;
+   if (!frontend->check_for_path_changes)
+      return false;
+   return frontend->check_for_path_changes(change_data);
+}
+
+void frontend_driver_set_sustained_performance_mode(bool on)
+{
+   frontend_state_t *frontend_st   = &frontend_driver_st;
+   frontend_ctx_driver_t *frontend = frontend_st->current_frontend_ctx;
+   if (frontend->set_sustained_performance_mode)
+      frontend->set_sustained_performance_mode(on);
+}
+
+const char* frontend_driver_get_cpu_model_name(void)
+{
+   frontend_state_t *frontend_st   = &frontend_driver_st;
+   frontend_ctx_driver_t *frontend = frontend_st->current_frontend_ctx;
+   if (!frontend->get_cpu_model_name)
+      return NULL;
+   return frontend->get_cpu_model_name();
+}
+
+enum retro_language frontend_driver_get_user_language(void)
+{
+   frontend_state_t *frontend_st   = &frontend_driver_st;
+   frontend_ctx_driver_t *frontend = frontend_st->current_frontend_ctx;
+   if (!frontend->get_user_language)
+      return RETRO_LANGUAGE_ENGLISH;
+   return frontend->get_user_language();
+}
diff --git a/frontend/frontend_driver.h b/frontend/frontend_driver.h
index a8c958b67e..1cfdc82cbe 100644
--- a/frontend/frontend_driver.h
+++ b/frontend/frontend_driver.h
@@ -119,6 +119,11 @@ typedef struct frontend_ctx_driver
    const struct video_driver *(*get_video_driver)(void);
 } frontend_ctx_driver_t;
 
+typedef struct
+{
+   frontend_ctx_driver_t *current_frontend_ctx; /* ptr alignment */
+} frontend_state_t;
+
 extern frontend_ctx_driver_t frontend_ctx_gx;
 extern frontend_ctx_driver_t frontend_ctx_wiiu;
 extern frontend_ctx_driver_t frontend_ctx_ps3;
@@ -226,6 +231,8 @@ const char* frontend_driver_get_cpu_model_name(void);
 
 enum retro_language frontend_driver_get_user_language(void);
 
+frontend_state_t *frontend_state_get_ptr(void);
+
 RETRO_END_DECLS
 
 #endif
diff --git a/retroarch.c b/retroarch.c
index e6fc7a3750..acdab4c52c 100644
--- a/retroarch.c
+++ b/retroarch.c
@@ -5230,7 +5230,8 @@ static bool is_narrator_running(struct rarch_state *p_rarch,
             accessibility_enable,
             p_rarch->accessibility_enabled))
    {
-      frontend_ctx_driver_t *frontend = p_rarch->current_frontend_ctx;
+      frontend_ctx_driver_t *frontend = 
+         frontend_state_get_ptr()->current_frontend_ctx;
       if (frontend && frontend->is_narrator_running)
          return frontend->is_narrator_running();
    }
@@ -8429,14 +8430,14 @@ int rarch_main(int argc, char *argv[], void *data)
 
    runloop_msg_queue_init();
 
-   if (p_rarch->current_frontend_ctx)
+   if (frontend_state_get_ptr()->current_frontend_ctx)
    {
       content_ctx_info_t info;
 
       info.argc            = argc;
       info.argv            = argv;
       info.args            = data;
-      info.environ_get     = p_rarch->current_frontend_ctx->environment_get;
+      info.environ_get     = frontend_state_get_ptr()->current_frontend_ctx->environment_get;
 
       if (!task_push_load_content_from_cli(
                NULL,
@@ -20792,7 +20793,8 @@ static bool accessibility_speak_priority(
             accessibility_enable,
             p_rarch->accessibility_enabled))
    {
-      frontend_ctx_driver_t *frontend = p_rarch->current_frontend_ctx;
+      frontend_ctx_driver_t *frontend = 
+         frontend_state_get_ptr()->current_frontend_ctx;
 
       RARCH_LOG("Spoke: %s\n", speak_text);
 
@@ -21195,312 +21197,3 @@ void menu_content_environment_get(int *argc, char *argv[],
       wrap_args->libretro_path = string_is_empty(path_get(RARCH_PATH_CORE)) ? NULL :
          path_get(RARCH_PATH_CORE);
 }
-
-frontend_ctx_driver_t *frontend_get_ptr(void)
-{
-   struct rarch_state *p_rarch = &rarch_st;
-   return p_rarch->current_frontend_ctx;
-}
-
-int frontend_driver_parse_drive_list(void *data, bool load_content)
-{
-   struct rarch_state     *p_rarch = &rarch_st;
-   frontend_ctx_driver_t *frontend = p_rarch->current_frontend_ctx;
-
-   if (!frontend || !frontend->parse_drive_list)
-      return -1;
-   return frontend->parse_drive_list(data, load_content);
-}
-
-void frontend_driver_content_loaded(void)
-{
-   struct rarch_state     *p_rarch = &rarch_st;
-   frontend_ctx_driver_t *frontend = p_rarch->current_frontend_ctx;
-
-   if (!frontend || !frontend->content_loaded)
-      return;
-   frontend->content_loaded();
-}
-
-bool frontend_driver_has_fork(void)
-{
-   struct rarch_state     *p_rarch = &rarch_st;
-   frontend_ctx_driver_t *frontend = p_rarch->current_frontend_ctx;
-
-   if (!frontend || !frontend->set_fork)
-      return false;
-   return true;
-}
-
-bool frontend_driver_set_fork(enum frontend_fork fork_mode)
-{
-   struct rarch_state     *p_rarch = &rarch_st;
-   frontend_ctx_driver_t *frontend = p_rarch->current_frontend_ctx;
-
-   if (!frontend_driver_has_fork())
-      return false;
-   return frontend->set_fork(fork_mode);
-}
-
-void frontend_driver_process_args(int *argc, char *argv[])
-{
-   struct rarch_state     *p_rarch = &rarch_st;
-   frontend_ctx_driver_t *frontend = p_rarch->current_frontend_ctx;
-
-   if (frontend && frontend->process_args)
-      frontend->process_args(argc, argv);
-}
-
-bool frontend_driver_is_inited(void)
-{
-   struct rarch_state     *p_rarch = &rarch_st;
-   frontend_ctx_driver_t *frontend = p_rarch->current_frontend_ctx;
-   return frontend != NULL;
-}
-
-void frontend_driver_init_first(void *args)
-{
-   struct rarch_state *p_rarch   = &rarch_st;
-   p_rarch->current_frontend_ctx = (frontend_ctx_driver_t*)
-      frontend_ctx_init_first();
-
-   if (p_rarch->current_frontend_ctx && p_rarch->current_frontend_ctx->init)
-      p_rarch->current_frontend_ctx->init(args);
-}
-
-void frontend_driver_free(void)
-{
-   struct rarch_state *p_rarch      = &rarch_st;
-
-   if (p_rarch)
-      p_rarch->current_frontend_ctx = NULL;
-}
-
-bool frontend_driver_has_get_video_driver_func(void)
-{
-   struct rarch_state     *p_rarch = &rarch_st;
-   frontend_ctx_driver_t *frontend = p_rarch->current_frontend_ctx;
-   if (!frontend || !frontend->get_video_driver)
-      return false;
-   return true;
-}
-
-const struct video_driver *frontend_driver_get_video_driver(void)
-{
-   struct rarch_state     *p_rarch = &rarch_st;
-   frontend_ctx_driver_t *frontend = p_rarch->current_frontend_ctx;
-   if (!frontend || !frontend->get_video_driver)
-      return NULL;
-   return frontend->get_video_driver();
-}
-
-void frontend_driver_exitspawn(char *s, size_t len, char *args)
-{
-   struct rarch_state     *p_rarch = &rarch_st;
-   frontend_ctx_driver_t *frontend = p_rarch->current_frontend_ctx;
-   if (frontend && frontend->exitspawn)
-      frontend->exitspawn(s, len, args);
-}
-
-void frontend_driver_deinit(void *args)
-{
-   struct rarch_state     *p_rarch = &rarch_st;
-   frontend_ctx_driver_t *frontend = p_rarch->current_frontend_ctx;
-   if (frontend && frontend->deinit)
-      frontend->deinit(args);
-}
-
-void frontend_driver_shutdown(bool a)
-{
-   struct rarch_state     *p_rarch = &rarch_st;
-   frontend_ctx_driver_t *frontend = p_rarch->current_frontend_ctx;
-   if (frontend && frontend->shutdown)
-      frontend->shutdown(a);
-}
-
-enum frontend_architecture frontend_driver_get_cpu_architecture(void)
-{
-   struct rarch_state     *p_rarch = &rarch_st;
-   frontend_ctx_driver_t *frontend = p_rarch->current_frontend_ctx;
-   if (!frontend || !frontend->get_architecture)
-      return FRONTEND_ARCH_NONE;
-   return frontend->get_architecture();
-}
-
-const void *frontend_driver_get_cpu_architecture_str(
-      char *architecture, size_t size)
-{
-   struct rarch_state     *p_rarch = &rarch_st;
-   frontend_ctx_driver_t *frontend = p_rarch->current_frontend_ctx;
-   enum frontend_architecture arch = frontend_driver_get_cpu_architecture();
-
-   switch (arch)
-   {
-      case FRONTEND_ARCH_X86:
-         strcpy_literal(architecture, "x86");
-         break;
-      case FRONTEND_ARCH_X86_64:
-         strcpy_literal(architecture, "x64");
-         break;
-      case FRONTEND_ARCH_PPC:
-         strcpy_literal(architecture, "PPC");
-         break;
-      case FRONTEND_ARCH_ARM:
-         strcpy_literal(architecture, "ARM");
-         break;
-      case FRONTEND_ARCH_ARMV7:
-         strcpy_literal(architecture, "ARMv7");
-         break;
-      case FRONTEND_ARCH_ARMV8:
-         strcpy_literal(architecture, "ARMv8");
-         break;
-      case FRONTEND_ARCH_MIPS:
-         strcpy_literal(architecture, "MIPS");
-         break;
-      case FRONTEND_ARCH_TILE:
-         strcpy_literal(architecture, "Tilera");
-         break;
-      case FRONTEND_ARCH_NONE:
-      default:
-         strcpy_literal(architecture, "N/A");
-         break;
-   }
-
-   return frontend;
-}
-
-uint64_t frontend_driver_get_total_memory(void)
-{
-   struct rarch_state     *p_rarch = &rarch_st;
-   frontend_ctx_driver_t *frontend = p_rarch->current_frontend_ctx;
-   if (!frontend || !frontend->get_total_mem)
-      return 0;
-   return frontend->get_total_mem();
-}
-
-uint64_t frontend_driver_get_free_memory(void)
-{
-   struct rarch_state     *p_rarch = &rarch_st;
-   frontend_ctx_driver_t *frontend = p_rarch->current_frontend_ctx;
-   if (!frontend || !frontend->get_free_mem)
-      return 0;
-   return frontend->get_free_mem();
-}
-
-void frontend_driver_install_signal_handler(void)
-{
-   struct rarch_state     *p_rarch = &rarch_st;
-   frontend_ctx_driver_t *frontend = p_rarch->current_frontend_ctx;
-   if (frontend && frontend->install_signal_handler)
-      frontend->install_signal_handler();
-}
-
-int frontend_driver_get_signal_handler_state(void)
-{
-   struct rarch_state     *p_rarch = &rarch_st;
-   frontend_ctx_driver_t *frontend = p_rarch->current_frontend_ctx;
-   if (!frontend || !frontend->get_signal_handler_state)
-      return -1;
-   return frontend->get_signal_handler_state();
-}
-
-void frontend_driver_set_signal_handler_state(int value)
-{
-   struct rarch_state     *p_rarch = &rarch_st;
-   frontend_ctx_driver_t *frontend = p_rarch->current_frontend_ctx;
-   if (frontend && frontend->set_signal_handler_state)
-      frontend->set_signal_handler_state(value);
-}
-
-void frontend_driver_attach_console(void)
-{
-   struct rarch_state     *p_rarch = &rarch_st;
-   frontend_ctx_driver_t *frontend = p_rarch->current_frontend_ctx;
-   if (frontend && frontend->attach_console)
-      frontend->attach_console();
-}
-
-void frontend_driver_set_screen_brightness(int value)
-{
-   struct rarch_state     *p_rarch = &rarch_st;
-   frontend_ctx_driver_t *frontend = p_rarch->current_frontend_ctx;
-   if (frontend && frontend->set_screen_brightness)
-      frontend->set_screen_brightness(value);
-}
-
-bool frontend_driver_can_set_screen_brightness(void)
-{
-   struct rarch_state     *p_rarch = &rarch_st;
-   frontend_ctx_driver_t *frontend = p_rarch->current_frontend_ctx;
-   return (frontend && frontend->set_screen_brightness);
-}
-
-void frontend_driver_detach_console(void)
-{
-   struct rarch_state     *p_rarch = &rarch_st;
-   frontend_ctx_driver_t *frontend = p_rarch->current_frontend_ctx;
-   if (frontend && frontend->detach_console)
-      frontend->detach_console();
-}
-
-void frontend_driver_destroy_signal_handler_state(void)
-{
-   struct rarch_state     *p_rarch = &rarch_st;
-   frontend_ctx_driver_t *frontend = p_rarch->current_frontend_ctx;
-   if (frontend && frontend->destroy_signal_handler_state)
-      frontend->destroy_signal_handler_state();
-}
-
-bool frontend_driver_can_watch_for_changes(void)
-{
-   struct rarch_state     *p_rarch = &rarch_st;
-   frontend_ctx_driver_t *frontend = p_rarch->current_frontend_ctx;
-   if (!frontend || !frontend->watch_path_for_changes)
-      return false;
-   return true;
-}
-
-void frontend_driver_watch_path_for_changes(
-      struct string_list *list, int flags,
-      path_change_data_t **change_data)
-{
-   struct rarch_state     *p_rarch = &rarch_st;
-   frontend_ctx_driver_t *frontend = p_rarch->current_frontend_ctx;
-   if (frontend && frontend->watch_path_for_changes)
-      frontend->watch_path_for_changes(list, flags, change_data);
-}
-
-bool frontend_driver_check_for_path_changes(path_change_data_t *change_data)
-{
-   struct rarch_state     *p_rarch = &rarch_st;
-   frontend_ctx_driver_t *frontend = p_rarch->current_frontend_ctx;
-   if (!frontend || !frontend->check_for_path_changes)
-      return false;
-   return frontend->check_for_path_changes(change_data);
-}
-
-void frontend_driver_set_sustained_performance_mode(bool on)
-{
-   struct rarch_state     *p_rarch = &rarch_st;
-   frontend_ctx_driver_t *frontend = p_rarch->current_frontend_ctx;
-   if (frontend && frontend->set_sustained_performance_mode)
-      frontend->set_sustained_performance_mode(on);
-}
-
-const char* frontend_driver_get_cpu_model_name(void)
-{
-   struct rarch_state     *p_rarch = &rarch_st;
-   frontend_ctx_driver_t *frontend = p_rarch->current_frontend_ctx;
-   if (!frontend || !frontend->get_cpu_model_name)
-      return NULL;
-   return frontend->get_cpu_model_name();
-}
-
-enum retro_language frontend_driver_get_user_language(void)
-{
-   struct rarch_state     *p_rarch = &rarch_st;
-   frontend_ctx_driver_t *frontend = p_rarch->current_frontend_ctx;
-   if (!frontend || !frontend->get_user_language)
-      return RETRO_LANGUAGE_ENGLISH;
-   return frontend->get_user_language();
-}
diff --git a/retroarch_data.h b/retroarch_data.h
index 61401f6c89..214e39ea01 100644
--- a/retroarch_data.h
+++ b/retroarch_data.h
@@ -552,7 +552,6 @@ struct rarch_state
    /* Used while Netplay is running */
    netplay_t *netplay_data;
 #endif
-   frontend_ctx_driver_t *current_frontend_ctx;
 
    struct retro_perf_counter *perf_counters_rarch[MAX_COUNTERS];