Skip to content

Commit

Permalink
Merge pull request #16653 from fire/server_again_2
Browse files Browse the repository at this point in the history
Worked with Faless(Fabio Alessandrelli) to update server platform.
  • Loading branch information
akien-mga authored Feb 16, 2018
2 parents 2caf4ae + 2e66730 commit da612c3
Show file tree
Hide file tree
Showing 9 changed files with 888 additions and 41 deletions.
2 changes: 1 addition & 1 deletion SConstruct
Original file line number Diff line number Diff line change
Expand Up @@ -445,7 +445,7 @@ if selected_platform in platform_list:
if not env['verbose']:
methods.no_verbose(sys, env)

if (True): # FIXME: detect GLES3
if (not env["platform"] == "server"): # FIXME: detect GLES3
env.Append( BUILDERS = { 'GLES3_GLSL' : env.Builder(action = methods.build_gles3_headers, suffix = 'glsl.gen.h',src_suffix = '.glsl') } )

scons_cache_path = os.environ.get("SCONS_CACHE")
Expand Down
7 changes: 5 additions & 2 deletions drivers/SCsub
Original file line number Diff line number Diff line change
Expand Up @@ -22,8 +22,11 @@ if env['xaudio2']:
SConscript("xaudio2/SCsub")

# Graphics drivers
SConscript('gles3/SCsub')
SConscript('gl_context/SCsub')
if (env["platform"] != "server"):
SConscript('gles3/SCsub')
SConscript('gl_context/SCsub')
else:
SConscript('dummy/SCsub')

# Core dependencies
SConscript("png/SCsub")
Expand Down
5 changes: 5 additions & 0 deletions drivers/dummy/SCsub
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
#!/usr/bin/env python

Import('env')

env.add_source_files(env.drivers_sources, "*.cpp")
58 changes: 58 additions & 0 deletions drivers/dummy/audio_driver_dummy.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,58 @@
/*************************************************************************/
/* audio_driver_dummy.h */
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2018 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2018 Godot Engine contributors (cf. AUTHORS.md) */
/* */
/* Permission is hereby granted, free of charge, to any person obtaining */
/* a copy of this software and associated documentation files (the */
/* "Software"), to deal in the Software without restriction, including */
/* without limitation the rights to use, copy, modify, merge, publish, */
/* distribute, sublicense, and/or sell copies of the Software, and to */
/* permit persons to whom the Software is furnished to do so, subject to */
/* the following conditions: */
/* */
/* The above copyright notice and this permission notice shall be */
/* included in all copies or substantial portions of the Software. */
/* */
/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */
/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */
/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/
/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */
/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/

#ifndef AUDIO_DRIVER_DUMMY_H
#define AUDIO_DRIVER_DUMMY_H

#include "core/os/mutex.h"
#include "core/os/thread.h"
#include "servers/audio_server.h"

class AudioDriverDummy : public AudioDriver {
public:
const char *get_name() const {
return "Dummy";
};

virtual Error init() { return OK; }
virtual void start(){};
virtual int get_mix_rate() const {};
virtual SpeakerMode get_speaker_mode() const {};
virtual void lock(){};
virtual void unlock(){};
virtual void finish(){};

virtual float get_latency(){};

AudioDriverDummy(){};
~AudioDriverDummy(){};
};

#endif // AUDIO_DRIVER_DUMMY_H
669 changes: 669 additions & 0 deletions drivers/dummy/rasterizer_dummy.h

Large diffs are not rendered by default.

2 changes: 2 additions & 0 deletions platform/server/SCsub
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,8 @@ Import('env')

common_server = [\
"os_server.cpp",\
"#platform/x11/crash_handler_x11.cpp",
"#platform/x11/power_x11.cpp",
]

prog = env.add_program('#bin/godot_server', ['godot_server.cpp'] + common_server)
5 changes: 2 additions & 3 deletions platform/server/detect.py
Original file line number Diff line number Diff line change
Expand Up @@ -12,9 +12,6 @@ def get_name():

def can_build():

# Doesn't build against Godot 3.0 for now, disable to avoid confusing users
return False

if (os.name != "posix" or sys.platform == "darwin"):
return False

Expand All @@ -31,6 +28,7 @@ def get_opts():
def get_flags():

return [
("module_mobile_vr_enabled", False),
]


Expand Down Expand Up @@ -133,3 +131,4 @@ def configure(env):
env.Append(CPPPATH=['#platform/server'])
env.Append(CPPFLAGS=['-DSERVER_ENABLED', '-DUNIX_ENABLED'])
env.Append(LIBS=['pthread'])
env.Append(LIBS=['dl'])
163 changes: 129 additions & 34 deletions platform/server/os_server.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -27,11 +27,11 @@
/* 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/audio_driver_dummy.h"
#include "drivers/dummy/rasterizer_dummy.h"
#include "print_string.h"
#include "servers/visual/visual_server_raster.h"
#include <stdio.h>
#include <stdlib.h>

Expand All @@ -48,32 +48,39 @@ const char *OS_Server::get_video_driver_name(int p_driver) const {
return "Dummy";
}

int OS_Server::get_audio_driver_count() const {
return 1;
}

const char *OS_Server::get_audio_driver_name(int p_driver) const {

return "Dummy";
}

void OS_Server::initialize_core() {

crash_handler.initialize();

OS_Unix::initialize_core();
}

Error 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;

//rasterizer = memnew( RasterizerDummy );
RasterizerDummy::make_current();

//visual_server = memnew( VisualServerRaster(rasterizer) );
visual_server = memnew(VisualServerRaster);
visual_server->init();

AudioDriverManager::initialize(p_audio_driver);

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();

ERR_FAIL_COND_V(!visual_server, ERR_UNAVAILABLE);

visual_server->init();

input = memnew(InputDefault);

power_manager = memnew(PowerX11);

_ensure_user_data_dir();

return OK;
Expand All @@ -85,37 +92,24 @@ void OS_Server::finalize() {
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();
}

void OS_Server::set_mouse_show(bool p_show) {
}

void OS_Server::set_mouse_grab(bool p_grab) {

grab = p_grab;
}

bool OS_Server::is_mouse_grab_enabled() const {

return grab;
Expand All @@ -136,6 +130,7 @@ void OS_Server::set_window_title(const String &p_title) {

void OS_Server::set_video_mode(const VideoMode &p_video_mode, int p_screen) {
}

OS::VideoMode OS_Server::get_video_mode(int p_screen) const {

return current_videomode;
Expand Down Expand Up @@ -198,6 +193,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;
Expand All @@ -216,6 +215,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
Expand Down
18 changes: 17 additions & 1 deletion platform/server/os_server.h
Original file line number Diff line number Diff line change
Expand Up @@ -27,10 +27,10 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/

#ifndef OS_SERVER_H
#define OS_SERVER_H

#include "../x11/crash_handler_x11.h"
#include "../x11/power_x11.h"
#include "drivers/rtaudio/audio_driver_rtaudio.h"
#include "drivers/unix/os_unix.h"
Expand Down Expand Up @@ -63,10 +63,16 @@ class OS_Server : public OS_Unix {

PowerX11 *power_manager;

CrashHandler crash_handler;

protected:
virtual int get_video_driver_count() const;
virtual const char *get_video_driver_name(int p_driver) const;

virtual int get_audio_driver_count() const;
virtual const char *get_audio_driver_name(int p_driver) const;

virtual void initialize_core();
virtual Error initialize(const VideoMode &p_desired, int p_video_driver, int p_audio_driver);
virtual void finalize();

Expand Down Expand Up @@ -102,6 +108,16 @@ class OS_Server : public OS_Unix {
virtual OS::PowerState get_power_state();
virtual int get_power_seconds_left();
virtual int get_power_percent_left();
virtual bool _check_internal_feature_support(const String &p_feature);

virtual String get_config_path() const;
virtual String get_data_path() const;
virtual String get_cache_path() const;

virtual String get_system_dir(SystemDir p_dir) const;

void disable_crash_handler();
bool is_disable_crash_handler() const;

OS_Server();
};
Expand Down

0 comments on commit da612c3

Please sign in to comment.