Browse Source

Merge pull request #23388 from eska014/html5-stubexec

Add proper stubs for OS_JavaScript::execute(), get_process_id(), kill()
Rémi Verschelde 6 years ago
parent
commit
7771fe5d4a

+ 6 - 0
drivers/unix/os_unix.cpp

@@ -288,6 +288,11 @@ uint64_t OS_Unix::get_ticks_usec() const {
 
 Error OS_Unix::execute(const String &p_path, const List<String> &p_arguments, bool p_blocking, ProcessID *r_child_id, String *r_pipe, int *r_exitcode, bool read_stderr) {
 
+#ifdef __EMSCRIPTEN__
+	// Don't compile this code at all to avoid undefined references.
+	// Actual virtual call goes to OS_JavaScript.
+	ERR_FAIL_V(ERR_BUG);
+#else
 	if (p_blocking && r_pipe) {
 
 		String argss;
@@ -354,6 +359,7 @@ Error OS_Unix::execute(const String &p_path, const List<String> &p_arguments, bo
 	}
 
 	return OK;
+#endif
 }
 
 Error OS_Unix::kill(const ProcessID &p_pid) {

+ 18 - 0
platform/javascript/os_javascript.cpp

@@ -862,6 +862,24 @@ void OS_JavaScript::finalize() {
 
 // Miscellaneous
 
+Error OS_JavaScript::execute(const String &p_path, const List<String> &p_arguments, bool p_blocking, ProcessID *r_child_id, String *r_pipe, int *r_exitcode, bool read_stderr) {
+
+	ERR_EXPLAIN("OS::execute() is not available on the HTML5 platform");
+	ERR_FAIL_V(ERR_UNAVAILABLE);
+}
+
+Error OS_JavaScript::kill(const ProcessID &p_pid) {
+
+	ERR_EXPLAIN("OS::kill() is not available on the HTML5 platform");
+	ERR_FAIL_V(ERR_UNAVAILABLE);
+}
+
+int OS_JavaScript::get_process_id() const {
+
+	ERR_EXPLAIN("OS::get_process_id() is not available on the HTML5 platform");
+	ERR_FAIL_V(0);
+}
+
 extern "C" EMSCRIPTEN_KEEPALIVE void send_notification(int p_notification) {
 
 	if (p_notification == MainLoop::NOTIFICATION_WM_MOUSE_ENTER || p_notification == MainLoop::NOTIFICATION_WM_MOUSE_EXIT) {

+ 4 - 0
platform/javascript/os_javascript.h

@@ -133,6 +133,10 @@ public:
 	void run_async();
 	bool main_loop_iterate();
 
+	virtual Error execute(const String &p_path, const List<String> &p_arguments, bool p_blocking, ProcessID *r_child_id = NULL, String *r_pipe = NULL, int *r_exitcode = NULL, bool read_stderr = false);
+	virtual Error kill(const ProcessID &p_pid);
+	virtual int get_process_id() const;
+
 	virtual void alert(const String &p_alert, const String &p_title = "ALERT!");
 	virtual void set_window_title(const String &p_title);
 	virtual void set_icon(const Ref<Image> &p_icon);