mirror of
https://github.com/libretro/RetroArch.git
synced 2024-11-24 16:39:43 +00:00
e11c910c39
CRT dynamic width changes Change menu detection width Using alternative variables for CRT width and height see output Add files via upload Add files via upload Add files via upload Add files via upload Add files via upload Add files via upload Add files via upload Add files via upload Add files via upload Add files via upload Add files via upload Update video_crt_switch.c Update video_crt_switch.c Update video_display_server.h Update video_display_server.c Update dispserv_win32.c Update dispserv_x11.c Update menu_cbs_ok.c X centring on the fly X centring on the fly Update dispserv_x11.c X centring on the fly Update dispserv_win32.c Fix dispserv_win32.c Fix dispserv_win32.c
113 lines
3.8 KiB
C
113 lines
3.8 KiB
C
/* RetroArch - A frontend for libretro.
|
|
* Copyright (C) 2010-2014 - Hans-Kristian Arntzen
|
|
* Copyright (C) 2011-2017 - Daniel De Matteis
|
|
* Copyright (C) 2016-2017 - 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 <http://www.gnu.org/licenses/>.
|
|
*/
|
|
|
|
#include <stdio.h>
|
|
#include "video_display_server.h"
|
|
#include "video_driver.h"
|
|
#include "../verbosity.h"
|
|
|
|
static const video_display_server_t *current_display_server = &dispserv_null;
|
|
static void *current_display_server_data = NULL;
|
|
|
|
const char *video_display_server_get_ident(void)
|
|
{
|
|
if (!current_display_server)
|
|
return "null";
|
|
return current_display_server->ident;
|
|
}
|
|
|
|
void* video_display_server_init(void)
|
|
{
|
|
enum rarch_display_type type = video_driver_display_type_get();
|
|
|
|
video_display_server_destroy();
|
|
|
|
switch (type)
|
|
{
|
|
case RARCH_DISPLAY_WIN32:
|
|
#if defined(_WIN32) && !defined(_XBOX) && !defined(__WINRT__)
|
|
current_display_server = &dispserv_win32;
|
|
#endif
|
|
break;
|
|
case RARCH_DISPLAY_X11:
|
|
#if defined(HAVE_X11)
|
|
current_display_server = &dispserv_x11;
|
|
#endif
|
|
break;
|
|
default:
|
|
current_display_server = &dispserv_null;
|
|
break;
|
|
}
|
|
|
|
current_display_server_data = current_display_server->init();
|
|
|
|
RARCH_LOG("[Video]: Found display server: %s\n",
|
|
current_display_server->ident);
|
|
|
|
return current_display_server_data;
|
|
}
|
|
|
|
void video_display_server_destroy(void)
|
|
{
|
|
if (current_display_server && current_display_server->destroy)
|
|
if (current_display_server_data)
|
|
current_display_server->destroy(current_display_server_data);
|
|
}
|
|
|
|
bool video_display_server_set_window_opacity(unsigned opacity)
|
|
{
|
|
if (current_display_server && current_display_server->set_window_opacity)
|
|
return current_display_server->set_window_opacity(current_display_server_data, opacity);
|
|
return false;
|
|
}
|
|
|
|
bool video_display_server_set_window_progress(int progress, bool finished)
|
|
{
|
|
if (current_display_server && current_display_server->set_window_progress)
|
|
return current_display_server->set_window_progress(current_display_server_data, progress, finished);
|
|
return false;
|
|
}
|
|
|
|
bool video_display_server_set_window_decorations(bool on)
|
|
{
|
|
if (current_display_server && current_display_server->set_window_decorations)
|
|
return current_display_server->set_window_decorations(current_display_server_data, on);
|
|
return false;
|
|
}
|
|
|
|
bool video_display_server_set_resolution(unsigned width, unsigned height,
|
|
int int_hz, float hz, int center, int monitor_index, int xoffset)
|
|
{
|
|
if (current_display_server && current_display_server->set_resolution)
|
|
return current_display_server->set_resolution(current_display_server_data, width, height, int_hz, hz, center, monitor_index, xoffset);
|
|
return false;
|
|
}
|
|
|
|
void *video_display_server_get_resolution_list(unsigned *size)
|
|
{
|
|
if (current_display_server && current_display_server->get_resolution_list)
|
|
return current_display_server->get_resolution_list(current_display_server_data, size);
|
|
return NULL;
|
|
}
|
|
|
|
const char *video_display_server_get_output_options(void)
|
|
{
|
|
if (current_display_server && current_display_server->get_output_options)
|
|
return current_display_server->get_output_options(current_display_server_data);
|
|
return NULL;
|
|
}
|