diff options
author | Fabio Alessandrelli <fabio.alessandrelli@gmail.com> | 2017-12-27 01:31:51 +0100 |
---|---|---|
committer | K. S. Ernest (iFire) Lee <ernest.lee@chibifire.com> | 2018-02-15 07:34:11 -0800 |
commit | 6784d743f72f66e0e07343bdb326fa42c9f0f43c (patch) | |
tree | e7043786faac04dee67931003fdc319c16b179c2 /platform/server/os_server.cpp | |
parent | 72ef766dfa5fcf35283079ccb98d74f4dbb2d934 (diff) | |
download | redot-engine-6784d743f72f66e0e07343bdb326fa42c9f0f43c.tar.gz |
server platform now compiles and run on linux.
Seems to also be able to do exports of some demos I tried.
Diffstat (limited to 'platform/server/os_server.cpp')
-rw-r--r-- | platform/server/os_server.cpp | 167 |
1 files changed, 126 insertions, 41 deletions
diff --git a/platform/server/os_server.cpp b/platform/server/os_server.cpp index 370a347399..49ecc4389a 100644 --- a/platform/server/os_server.cpp +++ b/platform/server/os_server.cpp @@ -27,11 +27,10 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ - -//#include "servers/visual/visual_server_raster.h" -//#include "servers/visual/rasterizer_dummy.h" #include "os_server.h" +#include "drivers/dummy/rasterizer_dummy.h" #include "print_string.h" +#include "servers/visual/visual_server_raster.h" #include <stdio.h> #include <stdlib.h> @@ -48,65 +47,54 @@ const char *OS_Server::get_video_driver_name(int p_driver) const { return "Dummy"; } -Error OS_Server::initialize(const VideoMode &p_desired, int p_video_driver, int p_audio_driver) { +int OS_Server::get_audio_driver_count() const { + return 0; +} - args = OS::get_singleton()->get_cmdline_args(); - current_videomode = p_desired; - main_loop = NULL; +const char *OS_Server::get_audio_driver_name(int p_driver) const { - //rasterizer = memnew( RasterizerDummy ); + return ""; +} - //visual_server = memnew( VisualServerRaster(rasterizer) ); +void OS_Server::initialize_core() { - AudioDriverManager::initialize(p_audio_driver); + crash_handler.initialize(); - sample_manager = memnew(SampleManagerMallocSW); - audio_server = memnew(AudioServerSW(sample_manager)); - audio_server->init(); - spatial_sound_server = memnew(SpatialSoundServerSW); - spatial_sound_server->init(); - spatial_sound_2d_server = memnew(SpatialSound2DServerSW); - spatial_sound_2d_server->init(); + OS_Unix::initialize_core(); +} - ERR_FAIL_COND_V(!visual_server, ERR_UNAVAILABLE); +void OS_Server::initialize(const VideoMode &p_desired, int p_video_driver, int p_audio_driver) { + args = OS::get_singleton()->get_cmdline_args(); + current_videomode = p_desired; + main_loop = NULL; + + RasterizerDummy::make_current(); + + visual_server = memnew(VisualServerRaster); visual_server->init(); + AudioDriverManager::initialize(p_audio_driver); + input = memnew(InputDefault); - _ensure_user_data_dir(); + power_manager = memnew(PowerX11); - return OK; + _ensure_user_data_dir(); } - void OS_Server::finalize() { if (main_loop) memdelete(main_loop); main_loop = NULL; - spatial_sound_server->finish(); - memdelete(spatial_sound_server); - spatial_sound_2d_server->finish(); - memdelete(spatial_sound_2d_server); - - /* - if (debugger_connection_console) { - memdelete(debugger_connection_console); - } - */ - - memdelete(sample_manager); - - audio_server->finish(); - memdelete(audio_server); - visual_server->finish(); memdelete(visual_server); - //memdelete(rasterizer); memdelete(input); + memdelete(power_manager); + args.clear(); } @@ -183,9 +171,6 @@ void OS_Server::move_window_to_foreground() { void OS_Server::set_cursor_shape(CursorShape p_shape) { } -void OS_Server::set_custom_mouse_cursor(const RES &p_cursor, CursorShape p_shape, const Vector2 &p_hotspot) { -} - OS::PowerState OS_Server::get_power_state() { return power_manager->get_power_state(); } @@ -198,6 +183,10 @@ int OS_Server::get_power_percent_left() { return power_manager->get_power_percent_left(); } +bool OS_Server::_check_internal_feature_support(const String &p_feature) { + return p_feature == "pc"; +} + void OS_Server::run() { force_quit = false; @@ -216,6 +205,102 @@ void OS_Server::run() { main_loop->finish(); } +String OS_Server::get_config_path() const { + + if (has_environment("XDG_CONFIG_HOME")) { + return get_environment("XDG_CONFIG_HOME"); + } else if (has_environment("HOME")) { + return get_environment("HOME").plus_file(".config"); + } else { + return "."; + } +} + +String OS_Server::get_data_path() const { + + if (has_environment("XDG_DATA_HOME")) { + return get_environment("XDG_DATA_HOME"); + } else if (has_environment("HOME")) { + return get_environment("HOME").plus_file(".local/share"); + } else { + return get_config_path(); + } +} + +String OS_Server::get_cache_path() const { + + if (has_environment("XDG_CACHE_HOME")) { + return get_environment("XDG_CACHE_HOME"); + } else if (has_environment("HOME")) { + return get_environment("HOME").plus_file(".cache"); + } else { + return get_config_path(); + } +} + +String OS_Server::get_system_dir(SystemDir p_dir) const { + + String xdgparam; + + switch (p_dir) { + case SYSTEM_DIR_DESKTOP: { + + xdgparam = "DESKTOP"; + } break; + case SYSTEM_DIR_DCIM: { + + xdgparam = "PICTURES"; + + } break; + case SYSTEM_DIR_DOCUMENTS: { + + xdgparam = "DOCUMENTS"; + + } break; + case SYSTEM_DIR_DOWNLOADS: { + + xdgparam = "DOWNLOAD"; + + } break; + case SYSTEM_DIR_MOVIES: { + + xdgparam = "VIDEOS"; + + } break; + case SYSTEM_DIR_MUSIC: { + + xdgparam = "MUSIC"; + + } break; + case SYSTEM_DIR_PICTURES: { + + xdgparam = "PICTURES"; + + } break; + case SYSTEM_DIR_RINGTONES: { + + xdgparam = "MUSIC"; + + } break; + } + + String pipe; + List<String> arg; + arg.push_back(xdgparam); + Error err = const_cast<OS_Server *>(this)->execute("xdg-user-dir", arg, true, NULL, &pipe); + if (err != OK) + return "."; + return pipe.strip_edges(); +} + +void OS_Server::disable_crash_handler() { + crash_handler.disable(); +} + +bool OS_Server::is_disable_crash_handler() const { + return crash_handler.is_disabled(); +} + OS_Server::OS_Server() { //adriver here |