Move remaining dummy drivers to servers.

This commit is contained in:
Fabio Alessandrelli 2021-06-01 16:40:08 +02:00
parent 8594613f94
commit 8cdef21d6c
5 changed files with 28 additions and 26 deletions

View file

@ -30,7 +30,6 @@
#include "register_driver_types.h"
#include "drivers/dummy/display_server_headless.h"
#include "drivers/png/image_loader_png.h"
#include "drivers/png/resource_saver_png.h"
@ -38,8 +37,6 @@ static ImageLoaderPNG *image_loader_png;
static Ref<ResourceSaverPNG> resource_saver_png;
void register_core_driver_types() {
DisplayServerHeadless::register_headless_driver();
image_loader_png = memnew(ImageLoaderPNG);
ImageLoader::add_image_format_loader(image_loader_png);

View file

@ -30,8 +30,8 @@
#include "platform/javascript/display_server_javascript.h"
#include "drivers/dummy/rasterizer_dummy.h"
#include "platform/javascript/os_javascript.h"
#include "servers/rendering/rasterizer_dummy.h"
#include <emscripten.h>
#include <png.h>

View file

@ -32,14 +32,18 @@
#include "core/input/input.h"
#include "scene/resources/texture.h"
#include "servers/display_server_headless.h"
DisplayServer *DisplayServer::singleton = nullptr;
DisplayServer::SwitchVSyncCallbackInThread DisplayServer::switch_vsync_function = nullptr;
bool DisplayServer::hidpi_allowed = false;
DisplayServer::DisplayServerCreate DisplayServer::server_create_functions[DisplayServer::MAX_SERVERS];
int DisplayServer::server_create_count = 0;
DisplayServer::DisplayServerCreate DisplayServer::server_create_functions[DisplayServer::MAX_SERVERS] = {
{ "headless", &DisplayServerHeadless::create_func, &DisplayServerHeadless::get_rendering_drivers_func }
};
int DisplayServer::server_create_count = 1;
void DisplayServer::global_menu_add_item(const String &p_menu_root, const String &p_label, const Callable &p_callback, const Variant &p_tag) {
WARN_PRINT("Global menus not supported by this display server.");
@ -560,9 +564,11 @@ void DisplayServer::_bind_methods() {
void DisplayServer::register_create_function(const char *p_name, CreateFunction p_function, GetRenderingDriversFunction p_get_drivers) {
ERR_FAIL_COND(server_create_count == MAX_SERVERS);
server_create_functions[server_create_count].name = p_name;
server_create_functions[server_create_count].create_function = p_function;
server_create_functions[server_create_count].get_rendering_drivers_function = p_get_drivers;
// Headless display server is always last
server_create_functions[server_create_count] = server_create_functions[server_create_count - 1];
server_create_functions[server_create_count - 1].name = p_name;
server_create_functions[server_create_count - 1].create_function = p_function;
server_create_functions[server_create_count - 1].get_rendering_drivers_function = p_get_drivers;
server_create_count++;
}

View file

@ -33,9 +33,24 @@
#include "servers/display_server.h"
#include "drivers/dummy/rasterizer_dummy.h"
#include "servers/rendering/rasterizer_dummy.h"
class DisplayServerHeadless : public DisplayServer {
private:
friend class DisplayServer;
static Vector<String> get_rendering_drivers_func() {
Vector<String> drivers;
drivers.push_back("dummy");
return drivers;
}
static DisplayServer *create_func(const String &p_rendering_driver, DisplayServer::WindowMode p_mode, uint32_t p_flags, const Vector2i &p_resolution, Error &r_error) {
r_error = OK;
RasterizerDummy::make_current();
return memnew(DisplayServerHeadless());
}
public:
bool has_feature(Feature p_feature) const override { return false; }
String get_name() const override { return "headless"; }
@ -105,22 +120,6 @@ public:
void set_icon(const Ref<Image> &p_icon) override {}
static void register_headless_driver() {
register_create_function("headless", create_func, get_rendering_drivers_func);
}
static Vector<String> get_rendering_drivers_func() {
Vector<String> drivers;
drivers.push_back("dummy");
return drivers;
}
static DisplayServer *create_func(const String &p_rendering_driver, DisplayServer::WindowMode p_mode, uint32_t p_flags, const Vector2i &p_resolution, Error &r_error) {
r_error = OK;
RasterizerDummy::make_current();
return memnew(DisplayServerHeadless());
}
DisplayServerHeadless() {}
~DisplayServerHeadless() {}
};