mirror of
https://github.com/godotengine/godot.git
synced 2024-11-22 04:06:14 +00:00
Make window creation with custom position do not flash
This commit is contained in:
parent
0d04e7ec91
commit
d7e39e313b
@ -1956,9 +1956,15 @@ Error Main::setup2(Thread::ID p_main_tid_override) {
|
|||||||
{
|
{
|
||||||
String display_driver = DisplayServer::get_create_function_name(display_driver_idx);
|
String display_driver = DisplayServer::get_create_function_name(display_driver_idx);
|
||||||
|
|
||||||
|
Vector2i *window_position = nullptr;
|
||||||
|
Vector2i position = init_custom_pos;
|
||||||
|
if (init_use_custom_pos) {
|
||||||
|
window_position = &position;
|
||||||
|
}
|
||||||
|
|
||||||
// rendering_driver now held in static global String in main and initialized in setup()
|
// rendering_driver now held in static global String in main and initialized in setup()
|
||||||
Error err;
|
Error err;
|
||||||
display_server = DisplayServer::create(display_driver_idx, rendering_driver, window_mode, window_vsync_mode, window_flags, window_size, err);
|
display_server = DisplayServer::create(display_driver_idx, rendering_driver, window_mode, window_vsync_mode, window_flags, window_position, window_size, err);
|
||||||
if (err != OK || display_server == nullptr) {
|
if (err != OK || display_server == nullptr) {
|
||||||
// We can't use this display server, try other ones as fallback.
|
// We can't use this display server, try other ones as fallback.
|
||||||
// Skip headless (always last registered) because that's not what users
|
// Skip headless (always last registered) because that's not what users
|
||||||
@ -1967,7 +1973,7 @@ Error Main::setup2(Thread::ID p_main_tid_override) {
|
|||||||
if (i == display_driver_idx) {
|
if (i == display_driver_idx) {
|
||||||
continue; // Don't try the same twice.
|
continue; // Don't try the same twice.
|
||||||
}
|
}
|
||||||
display_server = DisplayServer::create(i, rendering_driver, window_mode, window_vsync_mode, window_flags, window_size, err);
|
display_server = DisplayServer::create(i, rendering_driver, window_mode, window_vsync_mode, window_flags, window_position, window_size, err);
|
||||||
if (err == OK && display_server != nullptr) {
|
if (err == OK && display_server != nullptr) {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -440,8 +440,8 @@ Vector<String> DisplayServerAndroid::get_rendering_drivers_func() {
|
|||||||
return drivers;
|
return drivers;
|
||||||
}
|
}
|
||||||
|
|
||||||
DisplayServer *DisplayServerAndroid::create_func(const String &p_rendering_driver, DisplayServer::WindowMode p_mode, DisplayServer::VSyncMode p_vsync_mode, uint32_t p_flags, const Vector2i &p_resolution, Error &r_error) {
|
DisplayServer *DisplayServerAndroid::create_func(const String &p_rendering_driver, DisplayServer::WindowMode p_mode, DisplayServer::VSyncMode p_vsync_mode, uint32_t p_flags, const Vector2i *p_position, const Vector2i &p_resolution, Error &r_error) {
|
||||||
DisplayServer *ds = memnew(DisplayServerAndroid(p_rendering_driver, p_mode, p_vsync_mode, p_flags, p_resolution, r_error));
|
DisplayServer *ds = memnew(DisplayServerAndroid(p_rendering_driver, p_mode, p_vsync_mode, p_flags, p_position, p_resolution, r_error));
|
||||||
if (r_error != OK) {
|
if (r_error != OK) {
|
||||||
OS::get_singleton()->alert("Your video card driver does not support any of the supported Vulkan versions.", "Unable to initialize Video driver");
|
OS::get_singleton()->alert("Your video card driver does not support any of the supported Vulkan versions.", "Unable to initialize Video driver");
|
||||||
}
|
}
|
||||||
@ -485,7 +485,7 @@ void DisplayServerAndroid::notify_surface_changed(int p_width, int p_height) {
|
|||||||
rect_changed_callback.callp(reinterpret_cast<const Variant **>(&sizep), 1, ret, ce);
|
rect_changed_callback.callp(reinterpret_cast<const Variant **>(&sizep), 1, ret, ce);
|
||||||
}
|
}
|
||||||
|
|
||||||
DisplayServerAndroid::DisplayServerAndroid(const String &p_rendering_driver, DisplayServer::WindowMode p_mode, DisplayServer::VSyncMode p_vsync_mode, uint32_t p_flags, const Vector2i &p_resolution, Error &r_error) {
|
DisplayServerAndroid::DisplayServerAndroid(const String &p_rendering_driver, DisplayServer::WindowMode p_mode, DisplayServer::VSyncMode p_vsync_mode, uint32_t p_flags, const Vector2i *p_position, const Vector2i &p_resolution, Error &r_error) {
|
||||||
rendering_driver = p_rendering_driver;
|
rendering_driver = p_rendering_driver;
|
||||||
|
|
||||||
// TODO: rendering_driver is broken, change when different drivers are supported again
|
// TODO: rendering_driver is broken, change when different drivers are supported again
|
||||||
|
@ -194,7 +194,7 @@ public:
|
|||||||
virtual void mouse_set_mode(MouseMode p_mode) override;
|
virtual void mouse_set_mode(MouseMode p_mode) override;
|
||||||
virtual MouseMode mouse_get_mode() const override;
|
virtual MouseMode mouse_get_mode() const override;
|
||||||
|
|
||||||
static DisplayServer *create_func(const String &p_rendering_driver, WindowMode p_mode, DisplayServer::VSyncMode p_vsync_mode, uint32_t p_flags, const Vector2i &p_resolution, Error &r_error);
|
static DisplayServer *create_func(const String &p_rendering_driver, WindowMode p_mode, DisplayServer::VSyncMode p_vsync_mode, uint32_t p_flags, const Vector2i *p_position, const Vector2i &p_resolution, Error &r_error);
|
||||||
static Vector<String> get_rendering_drivers_func();
|
static Vector<String> get_rendering_drivers_func();
|
||||||
static void register_android_driver();
|
static void register_android_driver();
|
||||||
|
|
||||||
@ -204,7 +204,7 @@ public:
|
|||||||
virtual Point2i mouse_get_position() const override;
|
virtual Point2i mouse_get_position() const override;
|
||||||
virtual MouseButton mouse_get_button_state() const override;
|
virtual MouseButton mouse_get_button_state() const override;
|
||||||
|
|
||||||
DisplayServerAndroid(const String &p_rendering_driver, WindowMode p_mode, DisplayServer::VSyncMode p_vsync_mode, uint32_t p_flags, const Vector2i &p_resolution, Error &r_error);
|
DisplayServerAndroid(const String &p_rendering_driver, WindowMode p_mode, DisplayServer::VSyncMode p_vsync_mode, uint32_t p_flags, const Vector2i *p_position, const Vector2i &p_resolution, Error &r_error);
|
||||||
~DisplayServerAndroid();
|
~DisplayServerAndroid();
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -73,7 +73,7 @@ class DisplayServerIOS : public DisplayServer {
|
|||||||
|
|
||||||
void perform_event(const Ref<InputEvent> &p_event);
|
void perform_event(const Ref<InputEvent> &p_event);
|
||||||
|
|
||||||
DisplayServerIOS(const String &p_rendering_driver, DisplayServer::WindowMode p_mode, DisplayServer::VSyncMode p_vsync_mode, uint32_t p_flags, const Vector2i &p_resolution, Error &r_error);
|
DisplayServerIOS(const String &p_rendering_driver, DisplayServer::WindowMode p_mode, DisplayServer::VSyncMode p_vsync_mode, uint32_t p_flags, const Vector2i *p_position, const Vector2i &p_resolution, Error &r_error);
|
||||||
~DisplayServerIOS();
|
~DisplayServerIOS();
|
||||||
|
|
||||||
public:
|
public:
|
||||||
@ -82,7 +82,7 @@ public:
|
|||||||
static DisplayServerIOS *get_singleton();
|
static DisplayServerIOS *get_singleton();
|
||||||
|
|
||||||
static void register_ios_driver();
|
static void register_ios_driver();
|
||||||
static DisplayServer *create_func(const String &p_rendering_driver, WindowMode p_mode, DisplayServer::VSyncMode p_vsync_mode, uint32_t p_flags, const Vector2i &p_resolution, Error &r_error);
|
static DisplayServer *create_func(const String &p_rendering_driver, WindowMode p_mode, DisplayServer::VSyncMode p_vsync_mode, uint32_t p_flags, const Vector2i *p_position, const Vector2i &p_resolution, Error &r_error);
|
||||||
static Vector<String> get_rendering_drivers_func();
|
static Vector<String> get_rendering_drivers_func();
|
||||||
|
|
||||||
// MARK: - Events
|
// MARK: - Events
|
||||||
|
@ -50,7 +50,7 @@ DisplayServerIOS *DisplayServerIOS::get_singleton() {
|
|||||||
return (DisplayServerIOS *)DisplayServer::get_singleton();
|
return (DisplayServerIOS *)DisplayServer::get_singleton();
|
||||||
}
|
}
|
||||||
|
|
||||||
DisplayServerIOS::DisplayServerIOS(const String &p_rendering_driver, WindowMode p_mode, DisplayServer::VSyncMode p_vsync_mode, uint32_t p_flags, const Vector2i &p_resolution, Error &r_error) {
|
DisplayServerIOS::DisplayServerIOS(const String &p_rendering_driver, WindowMode p_mode, DisplayServer::VSyncMode p_vsync_mode, uint32_t p_flags, const Vector2i *p_position, const Vector2i &p_resolution, Error &r_error) {
|
||||||
rendering_driver = p_rendering_driver;
|
rendering_driver = p_rendering_driver;
|
||||||
|
|
||||||
// Init TTS
|
// Init TTS
|
||||||
@ -152,8 +152,8 @@ DisplayServerIOS::~DisplayServerIOS() {
|
|||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
DisplayServer *DisplayServerIOS::create_func(const String &p_rendering_driver, WindowMode p_mode, DisplayServer::VSyncMode p_vsync_mode, uint32_t p_flags, const Vector2i &p_resolution, Error &r_error) {
|
DisplayServer *DisplayServerIOS::create_func(const String &p_rendering_driver, WindowMode p_mode, DisplayServer::VSyncMode p_vsync_mode, uint32_t p_flags, const Vector2i *p_position, const Vector2i &p_resolution, Error &r_error) {
|
||||||
return memnew(DisplayServerIOS(p_rendering_driver, p_mode, p_vsync_mode, p_flags, p_resolution, r_error));
|
return memnew(DisplayServerIOS(p_rendering_driver, p_mode, p_vsync_mode, p_flags, p_position, p_resolution, r_error));
|
||||||
}
|
}
|
||||||
|
|
||||||
Vector<String> DisplayServerIOS::get_rendering_drivers_func() {
|
Vector<String> DisplayServerIOS::get_rendering_drivers_func() {
|
||||||
|
@ -4432,8 +4432,8 @@ Vector<String> DisplayServerX11::get_rendering_drivers_func() {
|
|||||||
return drivers;
|
return drivers;
|
||||||
}
|
}
|
||||||
|
|
||||||
DisplayServer *DisplayServerX11::create_func(const String &p_rendering_driver, WindowMode p_mode, VSyncMode p_vsync_mode, uint32_t p_flags, const Vector2i &p_resolution, Error &r_error) {
|
DisplayServer *DisplayServerX11::create_func(const String &p_rendering_driver, WindowMode p_mode, VSyncMode p_vsync_mode, uint32_t p_flags, const Vector2i *p_position, const Vector2i &p_resolution, Error &r_error) {
|
||||||
DisplayServer *ds = memnew(DisplayServerX11(p_rendering_driver, p_mode, p_vsync_mode, p_flags, p_resolution, r_error));
|
DisplayServer *ds = memnew(DisplayServerX11(p_rendering_driver, p_mode, p_vsync_mode, p_flags, p_position, p_resolution, r_error));
|
||||||
if (r_error != OK) {
|
if (r_error != OK) {
|
||||||
if (p_rendering_driver == "vulkan") {
|
if (p_rendering_driver == "vulkan") {
|
||||||
String executable_name = OS::get_singleton()->get_executable_path().get_file();
|
String executable_name = OS::get_singleton()->get_executable_path().get_file();
|
||||||
@ -4693,7 +4693,7 @@ DisplayServerX11::WindowID DisplayServerX11::_create_window(WindowMode p_mode, V
|
|||||||
return id;
|
return id;
|
||||||
}
|
}
|
||||||
|
|
||||||
DisplayServerX11::DisplayServerX11(const String &p_rendering_driver, WindowMode p_mode, VSyncMode p_vsync_mode, uint32_t p_flags, const Vector2i &p_resolution, Error &r_error) {
|
DisplayServerX11::DisplayServerX11(const String &p_rendering_driver, WindowMode p_mode, VSyncMode p_vsync_mode, uint32_t p_flags, const Vector2i *p_position, const Vector2i &p_resolution, Error &r_error) {
|
||||||
Input::get_singleton()->set_event_dispatch_function(_dispatch_input_events);
|
Input::get_singleton()->set_event_dispatch_function(_dispatch_input_events);
|
||||||
|
|
||||||
r_error = OK;
|
r_error = OK;
|
||||||
@ -4920,6 +4920,11 @@ DisplayServerX11::DisplayServerX11(const String &p_rendering_driver, WindowMode
|
|||||||
Point2i window_position(
|
Point2i window_position(
|
||||||
(screen_get_size(0).width - p_resolution.width) / 2,
|
(screen_get_size(0).width - p_resolution.width) / 2,
|
||||||
(screen_get_size(0).height - p_resolution.height) / 2);
|
(screen_get_size(0).height - p_resolution.height) / 2);
|
||||||
|
|
||||||
|
if (p_position != nullptr) {
|
||||||
|
window_position = *p_position;
|
||||||
|
}
|
||||||
|
|
||||||
WindowID main_window = _create_window(p_mode, p_vsync_mode, p_flags, Rect2i(window_position, p_resolution));
|
WindowID main_window = _create_window(p_mode, p_vsync_mode, p_flags, Rect2i(window_position, p_resolution));
|
||||||
if (main_window == INVALID_WINDOW_ID) {
|
if (main_window == INVALID_WINDOW_ID) {
|
||||||
r_error = ERR_CANT_CREATE;
|
r_error = ERR_CANT_CREATE;
|
||||||
|
@ -444,12 +444,12 @@ public:
|
|||||||
virtual void set_native_icon(const String &p_filename) override;
|
virtual void set_native_icon(const String &p_filename) override;
|
||||||
virtual void set_icon(const Ref<Image> &p_icon) override;
|
virtual void set_icon(const Ref<Image> &p_icon) override;
|
||||||
|
|
||||||
static DisplayServer *create_func(const String &p_rendering_driver, WindowMode p_mode, VSyncMode p_vsync_mode, uint32_t p_flags, const Vector2i &p_resolution, Error &r_error);
|
static DisplayServer *create_func(const String &p_rendering_driver, WindowMode p_mode, VSyncMode p_vsync_mode, uint32_t p_flags, const Vector2i *p_position, const Vector2i &p_resolution, Error &r_error);
|
||||||
static Vector<String> get_rendering_drivers_func();
|
static Vector<String> get_rendering_drivers_func();
|
||||||
|
|
||||||
static void register_x11_driver();
|
static void register_x11_driver();
|
||||||
|
|
||||||
DisplayServerX11(const String &p_rendering_driver, WindowMode p_mode, VSyncMode p_vsync_mode, uint32_t p_flags, const Vector2i &p_resolution, Error &r_error);
|
DisplayServerX11(const String &p_rendering_driver, WindowMode p_mode, VSyncMode p_vsync_mode, uint32_t p_flags, const Vector2i *p_position, const Vector2i &p_resolution, Error &r_error);
|
||||||
~DisplayServerX11();
|
~DisplayServerX11();
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -430,12 +430,12 @@ public:
|
|||||||
virtual void set_native_icon(const String &p_filename) override;
|
virtual void set_native_icon(const String &p_filename) override;
|
||||||
virtual void set_icon(const Ref<Image> &p_icon) override;
|
virtual void set_icon(const Ref<Image> &p_icon) override;
|
||||||
|
|
||||||
static DisplayServer *create_func(const String &p_rendering_driver, WindowMode p_mode, VSyncMode p_vsync_mode, uint32_t p_flags, const Vector2i &p_resolution, Error &r_error);
|
static DisplayServer *create_func(const String &p_rendering_driver, WindowMode p_mode, VSyncMode p_vsync_mode, uint32_t p_flags, const Vector2i *p_position, const Vector2i &p_resolution, Error &r_error);
|
||||||
static Vector<String> get_rendering_drivers_func();
|
static Vector<String> get_rendering_drivers_func();
|
||||||
|
|
||||||
static void register_macos_driver();
|
static void register_macos_driver();
|
||||||
|
|
||||||
DisplayServerMacOS(const String &p_rendering_driver, WindowMode p_mode, VSyncMode p_vsync_mode, uint32_t p_flags, const Vector2i &p_resolution, Error &r_error);
|
DisplayServerMacOS(const String &p_rendering_driver, WindowMode p_mode, VSyncMode p_vsync_mode, uint32_t p_flags, const Vector2i *p_position, const Vector2i &p_resolution, Error &r_error);
|
||||||
~DisplayServerMacOS();
|
~DisplayServerMacOS();
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -3405,8 +3405,8 @@ void DisplayServerMacOS::set_icon(const Ref<Image> &p_icon) {
|
|||||||
[NSApp setApplicationIconImage:nsimg];
|
[NSApp setApplicationIconImage:nsimg];
|
||||||
}
|
}
|
||||||
|
|
||||||
DisplayServer *DisplayServerMacOS::create_func(const String &p_rendering_driver, WindowMode p_mode, VSyncMode p_vsync_mode, uint32_t p_flags, const Vector2i &p_resolution, Error &r_error) {
|
DisplayServer *DisplayServerMacOS::create_func(const String &p_rendering_driver, WindowMode p_mode, VSyncMode p_vsync_mode, uint32_t p_flags, const Vector2i *p_position, const Vector2i &p_resolution, Error &r_error) {
|
||||||
DisplayServer *ds = memnew(DisplayServerMacOS(p_rendering_driver, p_mode, p_vsync_mode, p_flags, p_resolution, r_error));
|
DisplayServer *ds = memnew(DisplayServerMacOS(p_rendering_driver, p_mode, p_vsync_mode, p_flags, p_position, p_resolution, r_error));
|
||||||
if (r_error != OK) {
|
if (r_error != OK) {
|
||||||
if (p_rendering_driver == "vulkan") {
|
if (p_rendering_driver == "vulkan") {
|
||||||
String executable_command;
|
String executable_command;
|
||||||
@ -3575,7 +3575,7 @@ bool DisplayServerMacOS::mouse_process_popups(bool p_close) {
|
|||||||
return closed;
|
return closed;
|
||||||
}
|
}
|
||||||
|
|
||||||
DisplayServerMacOS::DisplayServerMacOS(const String &p_rendering_driver, WindowMode p_mode, VSyncMode p_vsync_mode, uint32_t p_flags, const Vector2i &p_resolution, Error &r_error) {
|
DisplayServerMacOS::DisplayServerMacOS(const String &p_rendering_driver, WindowMode p_mode, VSyncMode p_vsync_mode, uint32_t p_flags, const Vector2i *p_position, const Vector2i &p_resolution, Error &r_error) {
|
||||||
Input::get_singleton()->set_event_dispatch_function(_dispatch_input_events);
|
Input::get_singleton()->set_event_dispatch_function(_dispatch_input_events);
|
||||||
|
|
||||||
r_error = OK;
|
r_error = OK;
|
||||||
@ -3684,6 +3684,11 @@ DisplayServerMacOS::DisplayServerMacOS(const String &p_rendering_driver, WindowM
|
|||||||
Point2i window_position(
|
Point2i window_position(
|
||||||
screen_get_position(0).x + (screen_get_size(0).width - p_resolution.width) / 2,
|
screen_get_position(0).x + (screen_get_size(0).width - p_resolution.width) / 2,
|
||||||
screen_get_position(0).y + (screen_get_size(0).height - p_resolution.height) / 2);
|
screen_get_position(0).y + (screen_get_size(0).height - p_resolution.height) / 2);
|
||||||
|
|
||||||
|
if (p_position != nullptr) {
|
||||||
|
window_position = *p_position;
|
||||||
|
}
|
||||||
|
|
||||||
WindowID main_window = _create_window(p_mode, p_vsync_mode, Rect2i(window_position, p_resolution));
|
WindowID main_window = _create_window(p_mode, p_vsync_mode, Rect2i(window_position, p_resolution));
|
||||||
ERR_FAIL_COND(main_window == INVALID_WINDOW_ID);
|
ERR_FAIL_COND(main_window == INVALID_WINDOW_ID);
|
||||||
for (int i = 0; i < WINDOW_FLAG_MAX; i++) {
|
for (int i = 0; i < WINDOW_FLAG_MAX; i++) {
|
||||||
|
@ -738,11 +738,11 @@ void DisplayServerWeb::_dispatch_input_event(const Ref<InputEvent> &p_event) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
DisplayServer *DisplayServerWeb::create_func(const String &p_rendering_driver, WindowMode p_window_mode, VSyncMode p_vsync_mode, uint32_t p_flags, const Size2i &p_resolution, Error &r_error) {
|
DisplayServer *DisplayServerWeb::create_func(const String &p_rendering_driver, WindowMode p_window_mode, VSyncMode p_vsync_mode, uint32_t p_flags, const Point2i *p_position, const Size2i &p_resolution, Error &r_error) {
|
||||||
return memnew(DisplayServerWeb(p_rendering_driver, p_window_mode, p_vsync_mode, p_flags, p_resolution, r_error));
|
return memnew(DisplayServerWeb(p_rendering_driver, p_window_mode, p_vsync_mode, p_flags, p_position, p_resolution, r_error));
|
||||||
}
|
}
|
||||||
|
|
||||||
DisplayServerWeb::DisplayServerWeb(const String &p_rendering_driver, WindowMode p_window_mode, VSyncMode p_vsync_mode, uint32_t p_flags, const Size2i &p_resolution, Error &r_error) {
|
DisplayServerWeb::DisplayServerWeb(const String &p_rendering_driver, WindowMode p_window_mode, VSyncMode p_vsync_mode, uint32_t p_flags, const Point2i *p_position, const Size2i &p_resolution, Error &r_error) {
|
||||||
r_error = OK; // Always succeeds for now.
|
r_error = OK; // Always succeeds for now.
|
||||||
|
|
||||||
// Ensure the canvas ID.
|
// Ensure the canvas ID.
|
||||||
|
@ -96,7 +96,7 @@ private:
|
|||||||
static void _js_utterance_callback(int p_event, int p_id, int p_pos);
|
static void _js_utterance_callback(int p_event, int p_id, int p_pos);
|
||||||
|
|
||||||
static Vector<String> get_rendering_drivers_func();
|
static Vector<String> get_rendering_drivers_func();
|
||||||
static DisplayServer *create_func(const String &p_rendering_driver, WindowMode p_window_mode, VSyncMode p_vsync_mode, uint32_t p_flags, const Vector2i &p_resolution, Error &r_error);
|
static DisplayServer *create_func(const String &p_rendering_driver, WindowMode p_window_mode, VSyncMode p_vsync_mode, uint32_t p_flags, const Vector2i *p_position, const Vector2i &p_resolution, Error &r_error);
|
||||||
|
|
||||||
static void _dispatch_input_event(const Ref<InputEvent> &p_event);
|
static void _dispatch_input_event(const Ref<InputEvent> &p_event);
|
||||||
|
|
||||||
@ -221,7 +221,7 @@ public:
|
|||||||
virtual void swap_buffers() override;
|
virtual void swap_buffers() override;
|
||||||
|
|
||||||
static void register_web_driver();
|
static void register_web_driver();
|
||||||
DisplayServerWeb(const String &p_rendering_driver, WindowMode p_window_mode, VSyncMode p_vsync_mode, uint32_t p_flags, const Size2i &p_resolution, Error &r_error);
|
DisplayServerWeb(const String &p_rendering_driver, WindowMode p_window_mode, VSyncMode p_vsync_mode, uint32_t p_flags, const Point2i *p_position, const Size2i &p_resolution, Error &r_error);
|
||||||
~DisplayServerWeb();
|
~DisplayServerWeb();
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -3704,7 +3704,7 @@ void DisplayServerWindows::tablet_set_current_driver(const String &p_driver) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
DisplayServerWindows::DisplayServerWindows(const String &p_rendering_driver, WindowMode p_mode, VSyncMode p_vsync_mode, uint32_t p_flags, const Vector2i &p_resolution, Error &r_error) {
|
DisplayServerWindows::DisplayServerWindows(const String &p_rendering_driver, WindowMode p_mode, VSyncMode p_vsync_mode, uint32_t p_flags, const Vector2i *p_position, const Vector2i &p_resolution, Error &r_error) {
|
||||||
drop_events = false;
|
drop_events = false;
|
||||||
key_event_pos = 0;
|
key_event_pos = 0;
|
||||||
|
|
||||||
@ -3856,6 +3856,10 @@ DisplayServerWindows::DisplayServerWindows(const String &p_rendering_driver, Win
|
|||||||
(screen_get_size(0).width - p_resolution.width) / 2,
|
(screen_get_size(0).width - p_resolution.width) / 2,
|
||||||
(screen_get_size(0).height - p_resolution.height) / 2);
|
(screen_get_size(0).height - p_resolution.height) / 2);
|
||||||
|
|
||||||
|
if (p_position != nullptr) {
|
||||||
|
window_position = *p_position;
|
||||||
|
}
|
||||||
|
|
||||||
WindowID main_window = _create_window(p_mode, p_vsync_mode, 0, Rect2i(window_position, p_resolution));
|
WindowID main_window = _create_window(p_mode, p_vsync_mode, 0, Rect2i(window_position, p_resolution));
|
||||||
ERR_FAIL_COND_MSG(main_window == INVALID_WINDOW_ID, "Failed to create main window.");
|
ERR_FAIL_COND_MSG(main_window == INVALID_WINDOW_ID, "Failed to create main window.");
|
||||||
|
|
||||||
@ -3919,8 +3923,8 @@ Vector<String> DisplayServerWindows::get_rendering_drivers_func() {
|
|||||||
return drivers;
|
return drivers;
|
||||||
}
|
}
|
||||||
|
|
||||||
DisplayServer *DisplayServerWindows::create_func(const String &p_rendering_driver, WindowMode p_mode, VSyncMode p_vsync_mode, uint32_t p_flags, const Vector2i &p_resolution, Error &r_error) {
|
DisplayServer *DisplayServerWindows::create_func(const String &p_rendering_driver, WindowMode p_mode, VSyncMode p_vsync_mode, uint32_t p_flags, const Vector2i *p_position, const Vector2i &p_resolution, Error &r_error) {
|
||||||
DisplayServer *ds = memnew(DisplayServerWindows(p_rendering_driver, p_mode, p_vsync_mode, p_flags, p_resolution, r_error));
|
DisplayServer *ds = memnew(DisplayServerWindows(p_rendering_driver, p_mode, p_vsync_mode, p_flags, p_position, p_resolution, r_error));
|
||||||
if (r_error != OK) {
|
if (r_error != OK) {
|
||||||
if (p_rendering_driver == "vulkan") {
|
if (p_rendering_driver == "vulkan") {
|
||||||
String executable_name = OS::get_singleton()->get_executable_path().get_file();
|
String executable_name = OS::get_singleton()->get_executable_path().get_file();
|
||||||
|
@ -623,11 +623,11 @@ public:
|
|||||||
|
|
||||||
virtual void set_context(Context p_context) override;
|
virtual void set_context(Context p_context) override;
|
||||||
|
|
||||||
static DisplayServer *create_func(const String &p_rendering_driver, WindowMode p_mode, VSyncMode p_vsync_mode, uint32_t p_flags, const Vector2i &p_resolution, Error &r_error);
|
static DisplayServer *create_func(const String &p_rendering_driver, WindowMode p_mode, VSyncMode p_vsync_mode, uint32_t p_flags, const Vector2i *p_position, const Vector2i &p_resolution, Error &r_error);
|
||||||
static Vector<String> get_rendering_drivers_func();
|
static Vector<String> get_rendering_drivers_func();
|
||||||
static void register_windows_driver();
|
static void register_windows_driver();
|
||||||
|
|
||||||
DisplayServerWindows(const String &p_rendering_driver, WindowMode p_mode, VSyncMode p_vsync_mode, uint32_t p_flags, const Vector2i &p_resolution, Error &r_error);
|
DisplayServerWindows(const String &p_rendering_driver, WindowMode p_mode, VSyncMode p_vsync_mode, uint32_t p_flags, const Vector2i *p_position, const Vector2i &p_resolution, Error &r_error);
|
||||||
~DisplayServerWindows();
|
~DisplayServerWindows();
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -865,9 +865,9 @@ Vector<String> DisplayServer::get_create_function_rendering_drivers(int p_index)
|
|||||||
return server_create_functions[p_index].get_rendering_drivers_function();
|
return server_create_functions[p_index].get_rendering_drivers_function();
|
||||||
}
|
}
|
||||||
|
|
||||||
DisplayServer *DisplayServer::create(int p_index, const String &p_rendering_driver, WindowMode p_mode, VSyncMode p_vsync_mode, uint32_t p_flags, const Vector2i &p_resolution, Error &r_error) {
|
DisplayServer *DisplayServer::create(int p_index, const String &p_rendering_driver, WindowMode p_mode, VSyncMode p_vsync_mode, uint32_t p_flags, const Vector2i *p_position, const Vector2i &p_resolution, Error &r_error) {
|
||||||
ERR_FAIL_INDEX_V(p_index, server_create_count, nullptr);
|
ERR_FAIL_INDEX_V(p_index, server_create_count, nullptr);
|
||||||
return server_create_functions[p_index].create_function(p_rendering_driver, p_mode, p_vsync_mode, p_flags, p_resolution, r_error);
|
return server_create_functions[p_index].create_function(p_rendering_driver, p_mode, p_vsync_mode, p_flags, p_position, p_resolution, r_error);
|
||||||
}
|
}
|
||||||
|
|
||||||
void DisplayServer::_input_set_mouse_mode(Input::MouseMode p_mode) {
|
void DisplayServer::_input_set_mouse_mode(Input::MouseMode p_mode) {
|
||||||
|
@ -72,7 +72,7 @@ public:
|
|||||||
WINDOW_VIEW,
|
WINDOW_VIEW,
|
||||||
};
|
};
|
||||||
|
|
||||||
typedef DisplayServer *(*CreateFunction)(const String &, WindowMode, VSyncMode, uint32_t, const Size2i &, Error &r_error);
|
typedef DisplayServer *(*CreateFunction)(const String &, WindowMode, VSyncMode, uint32_t, const Point2i *, const Size2i &, Error &r_error);
|
||||||
typedef Vector<String> (*GetRenderingDriversFunction)();
|
typedef Vector<String> (*GetRenderingDriversFunction)();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
@ -483,7 +483,7 @@ public:
|
|||||||
static int get_create_function_count();
|
static int get_create_function_count();
|
||||||
static const char *get_create_function_name(int p_index);
|
static const char *get_create_function_name(int p_index);
|
||||||
static Vector<String> get_create_function_rendering_drivers(int p_index);
|
static Vector<String> get_create_function_rendering_drivers(int p_index);
|
||||||
static DisplayServer *create(int p_index, const String &p_rendering_driver, WindowMode p_mode, VSyncMode p_vsync_mode, uint32_t p_flags, const Vector2i &p_resolution, Error &r_error);
|
static DisplayServer *create(int p_index, const String &p_rendering_driver, WindowMode p_mode, VSyncMode p_vsync_mode, uint32_t p_flags, const Vector2i *p_position, const Vector2i &p_resolution, Error &r_error);
|
||||||
|
|
||||||
DisplayServer();
|
DisplayServer();
|
||||||
~DisplayServer();
|
~DisplayServer();
|
||||||
|
@ -45,7 +45,7 @@ private:
|
|||||||
return drivers;
|
return drivers;
|
||||||
}
|
}
|
||||||
|
|
||||||
static DisplayServer *create_func(const String &p_rendering_driver, DisplayServer::WindowMode p_mode, DisplayServer::VSyncMode p_vsync_mode, uint32_t p_flags, const Vector2i &p_resolution, Error &r_error) {
|
static DisplayServer *create_func(const String &p_rendering_driver, DisplayServer::WindowMode p_mode, DisplayServer::VSyncMode p_vsync_mode, uint32_t p_flags, const Vector2i *p_position, const Vector2i &p_resolution, Error &r_error) {
|
||||||
r_error = OK;
|
r_error = OK;
|
||||||
RasterizerDummy::make_current();
|
RasterizerDummy::make_current();
|
||||||
return memnew(DisplayServerHeadless());
|
return memnew(DisplayServerHeadless());
|
||||||
|
@ -199,7 +199,7 @@ struct GodotTestCaseListener : public doctest::IReporter {
|
|||||||
OS::get_singleton()->set_has_server_feature_callback(nullptr);
|
OS::get_singleton()->set_has_server_feature_callback(nullptr);
|
||||||
for (int i = 0; i < DisplayServer::get_create_function_count(); i++) {
|
for (int i = 0; i < DisplayServer::get_create_function_count(); i++) {
|
||||||
if (String("headless") == DisplayServer::get_create_function_name(i)) {
|
if (String("headless") == DisplayServer::get_create_function_name(i)) {
|
||||||
DisplayServer::create(i, "", DisplayServer::WindowMode::WINDOW_MODE_MINIMIZED, DisplayServer::VSyncMode::VSYNC_ENABLED, 0, Vector2i(0, 0), err);
|
DisplayServer::create(i, "", DisplayServer::WindowMode::WINDOW_MODE_MINIMIZED, DisplayServer::VSyncMode::VSYNC_ENABLED, 0, nullptr, Vector2i(0, 0), err);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user