diff --git a/Makefile.common b/Makefile.common
index c169de4f38..1ed15ad35f 100644
--- a/Makefile.common
+++ b/Makefile.common
@@ -1127,10 +1127,6 @@ ifeq ($(HAVE_CACA), 1)
OBJ += gfx/drivers/caca_gfx.o gfx/drivers_font/caca_font.o
LIBS += $(CACA_LIBS)
DEF_FLAGS += $(CACA_CFLAGS)
-
- ifeq ($(HAVE_MENU_COMMON), 1)
- OBJ += menu/drivers_display/menu_display_caca.o
- endif
endif
ifeq ($(HAVE_SIXEL), 1)
diff --git a/griffin/griffin.c b/griffin/griffin.c
index e8371af850..36985dd982 100644
--- a/griffin/griffin.c
+++ b/griffin/griffin.c
@@ -1334,10 +1334,6 @@ MENU
#include "../menu/drivers_display/menu_display_switch.c"
#endif
-#ifdef HAVE_CACA
-#include "../menu/drivers_display/menu_display_caca.c"
-#endif
-
#ifdef DJGPP
#include "../menu/drivers_display/menu_display_vga.c"
#endif
diff --git a/menu/drivers_display/menu_display_caca.c b/menu/drivers_display/menu_display_caca.c
deleted file mode 100644
index 218fd387cb..0000000000
--- a/menu/drivers_display/menu_display_caca.c
+++ /dev/null
@@ -1,107 +0,0 @@
-/* RetroArch - A frontend for libretro.
- * Copyright (C) 2011-2017 - Daniel De Matteis
- * Copyright (C) 2016-2019 - Brad Parker
- *
- * RetroArch is free software: you can redistribute it and/or modify it under the terms
- * of the GNU General Public License as published by the Free Software Found-
- * ation, either version 3 of the License, or (at your option) any later version.
- *
- * RetroArch is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
- * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
- * PURPOSE. See the GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License along with RetroArch.
- * If not, see .
- */
-
-#include
-
-#include
-#include
-
-#include "../../config.def.h"
-#include "../../gfx/font_driver.h"
-#include "../../retroarch.h"
-
-#include "../menu_driver.h"
-
-static void *menu_display_caca_get_default_mvp(video_frame_info_t *video_info)
-{
- return NULL;
-}
-
-static void menu_display_caca_blend_begin(video_frame_info_t *video_info)
-{
-}
-
-static void menu_display_caca_blend_end(video_frame_info_t *video_info)
-{
-}
-
-static void menu_display_caca_draw(menu_display_ctx_draw_t *draw,
- video_frame_info_t *video_info)
-{
-}
-
-static void menu_display_caca_draw_pipeline(menu_display_ctx_draw_t *draw,
- video_frame_info_t *video_info)
-{
-}
-
-static void menu_display_caca_viewport(menu_display_ctx_draw_t *draw,
- video_frame_info_t *video_info)
-{
-}
-
-static void menu_display_caca_restore_clear_color(void)
-{
-}
-
-static void menu_display_caca_clear_color(menu_display_ctx_clearcolor_t *clearcolor, video_frame_info_t *video_info)
-{
- (void)clearcolor;
-}
-
-static bool menu_display_caca_font_init_first(
- void **font_handle, void *video_data,
- const char *font_path, float font_size,
- bool is_threaded)
-{
- font_data_t **handle = (font_data_t**)font_handle;
- *handle = font_driver_init_first(video_data,
- font_path, font_size, true,
- is_threaded,
- FONT_DRIVER_RENDER_CACA);
- return *handle;
-}
-
-static const float *menu_display_caca_get_default_vertices(void)
-{
- static float dummy[16] = {0.0f};
- return &dummy[0];
-}
-
-static const float *menu_display_caca_get_default_tex_coords(void)
-{
- static float dummy[16] = {0.0f};
- return &dummy[0];
-}
-
-menu_display_ctx_driver_t menu_display_ctx_caca = {
- menu_display_caca_draw,
- menu_display_caca_draw_pipeline,
- menu_display_caca_viewport,
- menu_display_caca_blend_begin,
- menu_display_caca_blend_end,
- menu_display_caca_restore_clear_color,
- menu_display_caca_clear_color,
- menu_display_caca_get_default_mvp,
- menu_display_caca_get_default_vertices,
- menu_display_caca_get_default_tex_coords,
- menu_display_caca_font_init_first,
- MENU_VIDEO_DRIVER_CACA,
- "caca",
- false,
- NULL,
- NULL
-};
diff --git a/menu/menu_defines.h b/menu/menu_defines.h
index 82c2e43a0a..89ec9420da 100644
--- a/menu/menu_defines.h
+++ b/menu/menu_defines.h
@@ -274,7 +274,6 @@ enum menu_display_driver_type
MENU_VIDEO_DRIVER_VITA2D,
MENU_VIDEO_DRIVER_CTR,
MENU_VIDEO_DRIVER_WIIU,
- MENU_VIDEO_DRIVER_CACA,
MENU_VIDEO_DRIVER_SIXEL,
MENU_VIDEO_DRIVER_GDI,
MENU_VIDEO_DRIVER_SWITCH,
diff --git a/menu/menu_driver.c b/menu/menu_driver.c
index cb25268a07..580e32f56b 100644
--- a/menu/menu_driver.c
+++ b/menu/menu_driver.c
@@ -187,18 +187,54 @@ static const menu_ctx_driver_t *menu_ctx_drivers[] = {
NULL
};
-static menu_display_ctx_driver_t menu_display_ctx_null = {
- NULL, /* draw */
- NULL, /* draw_pipeline */
- NULL, /* viewport */
- NULL, /* blend_begin */
- NULL, /* blend_end */
- NULL, /* restore_clear_color */
- NULL, /* clear_color */
- NULL, /* get_default_mvp */
- NULL, /* get_default_vertices */
- NULL, /* get_default_tex_coords */
- NULL, /* font_init_first */
+static void *menu_display_null_get_default_mvp(video_frame_info_t *video_info) { return NULL; }
+static void menu_display_null_blend_begin(video_frame_info_t *video_info) { }
+static void menu_display_null_blend_end(video_frame_info_t *video_info) { }
+static void menu_display_null_draw(menu_display_ctx_draw_t *draw,
+ video_frame_info_t *video_info) { }
+static void menu_display_null_draw_pipeline(menu_display_ctx_draw_t *draw,
+ video_frame_info_t *video_info) { }
+static void menu_display_null_viewport(menu_display_ctx_draw_t *draw,
+ video_frame_info_t *video_info) { }
+static void menu_display_null_restore_clear_color(void) { }
+static void menu_display_null_clear_color(menu_display_ctx_clearcolor_t *clearcolor, video_frame_info_t *video_info) { }
+static bool menu_display_null_font_init_first(
+ void **font_handle, void *video_data,
+ const char *font_path, float font_size,
+ bool is_threaded)
+{
+ font_data_t **handle = (font_data_t**)font_handle;
+ *handle = font_driver_init_first(video_data,
+ font_path, font_size, true,
+ is_threaded,
+ FONT_DRIVER_RENDER_DONT_CARE);
+ return *handle;
+}
+
+static const float *menu_display_null_get_default_vertices(void)
+{
+ static float dummy[16] = {0.0f};
+ return &dummy[0];
+}
+
+static const float *menu_display_null_get_default_tex_coords(void)
+{
+ static float dummy[16] = {0.0f};
+ return &dummy[0];
+}
+
+menu_display_ctx_driver_t menu_display_ctx_null = {
+ menu_display_null_draw,
+ menu_display_null_draw_pipeline,
+ menu_display_null_viewport,
+ menu_display_null_blend_begin,
+ menu_display_null_blend_end,
+ menu_display_null_restore_clear_color,
+ menu_display_null_clear_color,
+ menu_display_null_get_default_mvp,
+ menu_display_null_get_default_vertices,
+ menu_display_null_get_default_tex_coords,
+ menu_display_null_font_init_first,
MENU_VIDEO_DRIVER_GENERIC,
"null",
false,
@@ -258,9 +294,6 @@ static menu_display_ctx_driver_t *menu_display_ctx_drivers[] = {
#ifdef HAVE_SIXEL
&menu_display_ctx_sixel,
#endif
-#ifdef HAVE_CACA
- &menu_display_ctx_caca,
-#endif
#ifdef HAVE_FPGA
&menu_display_ctx_fpga,
#endif
@@ -1648,10 +1681,6 @@ static bool menu_display_check_compatibility(
if (string_is_equal(video_driver, "sixel"))
return true;
break;
- case MENU_VIDEO_DRIVER_CACA:
- if (string_is_equal(video_driver, "caca"))
- return true;
- break;
case MENU_VIDEO_DRIVER_GDI:
if (string_is_equal(video_driver, "gdi"))
return true;
diff --git a/menu/menu_driver.h b/menu/menu_driver.h
index 0aac3add12..f74a64e3aa 100644
--- a/menu/menu_driver.h
+++ b/menu/menu_driver.h
@@ -733,7 +733,6 @@ extern menu_display_ctx_driver_t menu_display_ctx_d3d12;
extern menu_display_ctx_driver_t menu_display_ctx_vita2d;
extern menu_display_ctx_driver_t menu_display_ctx_ctr;
extern menu_display_ctx_driver_t menu_display_ctx_wiiu;
-extern menu_display_ctx_driver_t menu_display_ctx_caca;
extern menu_display_ctx_driver_t menu_display_ctx_gdi;
extern menu_display_ctx_driver_t menu_display_ctx_vga;
extern menu_display_ctx_driver_t menu_display_ctx_fpga;
diff --git a/retroarch.c b/retroarch.c
index 4230810aa0..310c656750 100644
--- a/retroarch.c
+++ b/retroarch.c
@@ -365,16 +365,42 @@ static const audio_driver_t *audio_drivers[] = {
NULL,
};
+static void video_null_free(void *data) { }
+
+static void *video_null_init(const video_info_t *video,
+ input_driver_t **input, void **input_data)
+{
+ *input = NULL;
+ *input_data = NULL;
+
+ return (void*)-1;
+}
+
+static bool video_null_frame(void *data, const void *frame,
+ unsigned frame_width, unsigned frame_height, uint64_t frame_count,
+ unsigned pitch, const char *msg, video_frame_info_t *video_info)
+{
+ return true;
+}
+
+static void video_null_set_nonblock_state(void *data, bool toggle) { }
+static bool video_null_alive(void *data) { return true; }
+static bool video_null_focus(void *data) { return true; }
+static bool video_null_has_windowed(void *data) { return true; }
+static bool video_null_suppress_screensaver(void *data, bool enable) { return false; }
+static bool video_null_set_shader(void *data,
+ enum rarch_shader_type type, const char *path) { return false; }
+
static video_driver_t video_null = {
- NULL, /* init */
- NULL, /* frame */
- NULL, /* set_nonblock_state */
- NULL, /* alive */
- NULL, /* focus */
- NULL, /* suppress_screensaver */
- NULL, /* has_windowed */
- NULL, /* set_shader */
- NULL, /* free */
+ video_null_init,
+ video_null_frame,
+ video_null_set_nonblock_state,
+ video_null_alive,
+ video_null_focus,
+ video_null_suppress_screensaver,
+ video_null_has_windowed,
+ video_null_set_shader,
+ video_null_free,
"null",
NULL, /* set_viewport */
NULL, /* set_rotation */