Fixed wrong size of the transfered link from the command line in EventReceiver.

git-svn-id: http://svn.code.sf.net/p/retroshare/code/trunk@4161 b45a01b8-16f6-495d-af2f-9b41ad6348cc
This commit is contained in:
thunder2 2011-04-18 22:15:24 +00:00
parent f110bad74c
commit d058bf9511
2 changed files with 14 additions and 14 deletions

View File

@ -52,25 +52,25 @@ EventReceiver::EventReceiver()
/* Build unique name for the running instance */ /* Build unique name for the running instance */
QString name = QString("RetroShare-%1::EventReceiver").arg(QCoreApplication::applicationDirPath()); QString name = QString("RetroShare-%1::EventReceiver").arg(QCoreApplication::applicationDirPath());
sharedMMemory.setKey(name); sharedMemory.setKey(name);
} }
EventReceiver::~EventReceiver() EventReceiver::~EventReceiver()
{ {
sharedMMemory.detach(); sharedMemory.detach();
} }
bool EventReceiver::start() bool EventReceiver::start()
{ {
if (!sharedMMemory.create(sizeof(SharedMemoryInfo))) { if (!sharedMemory.create(sizeof(SharedMemoryInfo))) {
std::cerr << "EventReceiver::start() Cannot create shared memory !" << sharedMMemory.errorString().toStdString() << std::endl; std::cerr << "EventReceiver::start() Cannot create shared memory !" << sharedMemory.errorString().toStdString() << std::endl;
return false; return false;
} }
bool result = true; bool result = true;
if (sharedMMemory.lock()) { if (sharedMemory.lock()) {
SharedMemoryInfo *info = (SharedMemoryInfo*) sharedMMemory.data(); SharedMemoryInfo *info = (SharedMemoryInfo*) sharedMemory.data();
if (info) { if (info) {
#ifdef WINDOWS_SYS #ifdef WINDOWS_SYS
info->wid = winId(); info->wid = winId();
@ -82,7 +82,7 @@ bool EventReceiver::start()
std::cerr << "EventReceiver::start() Shared memory returns a NULL pointer!" << std::endl; std::cerr << "EventReceiver::start() Shared memory returns a NULL pointer!" << std::endl;
} }
sharedMMemory.unlock(); sharedMemory.unlock();
} else { } else {
result = false; result = false;
std::cerr << "EventReceiver::start() Cannot lock shared memory !" << std::endl; std::cerr << "EventReceiver::start() Cannot lock shared memory !" << std::endl;
@ -93,23 +93,23 @@ bool EventReceiver::start()
bool EventReceiver::sendRetroShareLink(const QString& link) bool EventReceiver::sendRetroShareLink(const QString& link)
{ {
if (!sharedMMemory.attach()) { if (!sharedMemory.attach()) {
/* No running instance found */ /* No running instance found */
return false; return false;
} }
bool result = true; bool result = true;
if (sharedMMemory.lock()) { if (sharedMemory.lock()) {
SharedMemoryInfo *info = (SharedMemoryInfo*) sharedMMemory.data(); SharedMemoryInfo *info = (SharedMemoryInfo*) sharedMemory.data();
if (info) { if (info) {
#ifdef WINDOWS_SYS #ifdef WINDOWS_SYS
if (info->wid) { if (info->wid) {
QByteArray linkData = link.toAscii(); QByteArray linkData = link.toAscii();
COPYDATASTRUCT send; COPYDATASTRUCT send;
send.cbData = (link.length() + 1) * sizeof(char);
send.dwData = OP_RETROSHARELINK; send.dwData = OP_RETROSHARELINK;
send.cbData = link.length() * sizeof(char);
send.lpData = (void*) linkData.constData(); send.lpData = (void*) linkData.constData();
SendMessage((HWND) info->wid, WM_COPYDATA, (WPARAM) 0, (LPARAM) (PCOPYDATASTRUCT) &send); SendMessage((HWND) info->wid, WM_COPYDATA, (WPARAM) 0, (LPARAM) (PCOPYDATASTRUCT) &send);
@ -128,13 +128,13 @@ bool EventReceiver::sendRetroShareLink(const QString& link)
std::cerr << "EventReceiver::sendRetroShareLink() Cannot lock shared memory !" << std::endl; std::cerr << "EventReceiver::sendRetroShareLink() Cannot lock shared memory !" << std::endl;
} }
sharedMMemory.unlock(); sharedMemory.unlock();
} else { } else {
result = false; result = false;
std::cerr << "EventReceiver::start() Cannot lock shared memory !" << std::endl; std::cerr << "EventReceiver::start() Cannot lock shared memory !" << std::endl;
} }
sharedMMemory.detach(); sharedMemory.detach();
return result; return result;
} }

View File

@ -54,7 +54,7 @@ private:
bool winEvent (MSG* message, long* result); bool winEvent (MSG* message, long* result);
#endif // WINDOWS_SYS #endif // WINDOWS_SYS
QSharedMemory sharedMMemory; QSharedMemory sharedMemory;
}; };
#endif #endif