summaryrefslogtreecommitdiff
path: root/src/utils/process.cpp
diff options
context:
space:
mode:
authorAndrei Karas <akaras@inbox.ru>2015-12-13 19:37:50 +0300
committerAndrei Karas <akaras@inbox.ru>2015-12-13 19:39:33 +0300
commit8a7279daea883f86c2a500c368d252394faeea5b (patch)
tree02ca51df41ebe0c0acb3de0cf985f8407fcd68b4 /src/utils/process.cpp
parent909054f9606fa2c1c9825e3cf2e025df2e3710a1 (diff)
downloadmanaverse-8a7279daea883f86c2a500c368d252394faeea5b.tar.gz
manaverse-8a7279daea883f86c2a500c368d252394faeea5b.tar.bz2
manaverse-8a7279daea883f86c2a500c368d252394faeea5b.tar.xz
manaverse-8a7279daea883f86c2a500c368d252394faeea5b.zip
Move nacl messages related functions into separate file.
Diffstat (limited to 'src/utils/process.cpp')
-rw-r--r--src/utils/process.cpp77
1 files changed, 4 insertions, 73 deletions
diff --git a/src/utils/process.cpp b/src/utils/process.cpp
index 6da177eb9..a037baef8 100644
--- a/src/utils/process.cpp
+++ b/src/utils/process.cpp
@@ -39,6 +39,7 @@ const int timeOut = 10;
#ifdef WIN32
#include "utils/stringutils.h"
+
#include <windows.h>
int execFileWait(const std::string &pathName, const std::string &name A_UNUSED,
@@ -275,6 +276,9 @@ bool openBrowser(std::string url)
return execFile("/usr/bin/xdg-open", "/usr/bin/xdg-open", url, "");
}
#elif defined __native_client__
+
+#include "utils/naclmessages.h"
+
bool openBrowser(std::string url)
{
naclPostMessage("open-browser", url);
@@ -302,76 +306,3 @@ void setPriority(const bool big A_UNUSED)
{
}
#endif
-
-#ifdef __native_client__
-#include <ppapi_simple/ps.h>
-#include <ppapi_simple/ps_event.h>
-#include <ppapi/cpp/instance.h>
-#include <ppapi/cpp/var.h>
-
-#include <mutex>
-#include <condition_variable>
-
-struct _NaclMessageHandle final
-{
- bool handled;
- std::string type;
- std::string message;
- std::condition_variable condv;
-};
-
-void naclPostMessage(const std::string &type, const std::string &message)
-{
- pp::Var msgVar = pp::Var(std::string(type).append(":").append(message));
- pp::Instance(PSGetInstanceId()).PostMessage(msgVar);
-}
-
-static void naclMessageHandlerFunc(struct PP_Var key,
- struct PP_Var value,
- void* user_data)
-{
- NaclMessageHandle *handle = (NaclMessageHandle *)user_data;
-
- if (key.type != PP_VARTYPE_STRING || value.type != PP_VARTYPE_STRING)
- return;
- if (pp::Var(key).AsString() != handle->type)
- return;
-
- handle->handled = true;
- handle->message = pp::Var(value).AsString();
-
- handle->condv.notify_one();
-}
-
-NaclMessageHandle *naclRegisterMessageHandler(const std::string &type)
-{
- NaclMessageHandle *handle = new NaclMessageHandle;
- handle->handled = false;
- handle->type = type;
-
- PSEventRegisterMessageHandler(type.c_str(),
- naclMessageHandlerFunc,
- (void *)handle);
- return handle;
-}
-
-void naclUnregisterMessageHandler(NaclMessageHandle *handle)
-{
- PSEventRegisterMessageHandler(handle->type.c_str(),
- nullptr,
- nullptr);
- delete handle;
-}
-
-std::string naclWaitForMessage(NaclMessageHandle *handle)
-{
- std::mutex mtx;
- std::unique_lock <std::mutex> lck(mtx);
-
- while (!handle->handled)
- handle->condv.wait(lck);
-
- handle->handled = false;
- return handle->message;
-}
-#endif