#include "support/lassert.h"
#include "support/lstrings.h"
#include "support/os.h"
+#include "support/signals.h"
-#include "support/bind.h"
+#include <iostream>
#ifdef _WIN32
#include <io.h>
LyXComm::LyXComm(string const & pip, Server * cli, ClientCallbackfct ccb)
- : pipename_(pip), client_(cli), clientcb_(ccb), stopserver_(0)
+ : stopserver_(0), pipename_(pip), client_(cli), clientcb_(ccb)
{
for (int i = 0; i < MAX_PIPES; ++i) {
event_[i] = 0;
// Determine which pipe instance completed the operation.
i = wait - WAIT_OBJECT_0;
- LASSERT(i >= 0 && i <= MAX_PIPES, /**/);
+ LASSERT(i <= MAX_PIPES, /**/);
// Check whether we were waked up for stopping the pipe server.
if (i == MAX_PIPES)
}
if (!write) {
- theApp()->registerSocketCallback(fd,
- bind(&LyXComm::read_ready, this));
+ // Make sure not to call read_ready after destruction.
+ weak_ptr<void> tracker = tracker_.p();
+ theApp()->registerSocketCallback(fd, [=](){
+ if (!tracker.expired())
+ read_ready();
+ });
}
return fd;
// connect to the lyxfunc in the single GuiView we
// support currently. (Lgb)
- FuncRequest fr(lyxaction.lookupFunc(cmd), arg);
+ FuncRequest fr(lyxaction.lookupFunc(cmd), from_ascii(arg));
fr.setOrigin(FuncRequest::LYXSERVER);
DispatchResult dr;
theApp()->dispatch(fr, dr);