diff options
| author | Andreas Monzner <andreas.monzner@multimedia-labs.de> | 2005-06-08 12:38:15 +0000 |
|---|---|---|
| committer | Andreas Monzner <andreas.monzner@multimedia-labs.de> | 2005-06-08 12:38:15 +0000 |
| commit | 62b8a649fcae500c983215fac2e5202916c0195f (patch) | |
| tree | 09cda62e0d1be6d3b1db4f3761ac418ad01c50b6 /lib/base/message.cpp | |
| parent | 94284f21b07f1756120e8b6f5dd53e485a9ff66d (diff) | |
| download | enigma2-62b8a649fcae500c983215fac2e5202916c0195f.tar.gz enigma2-62b8a649fcae500c983215fac2e5202916c0195f.zip | |
merge some code with enigma code
Diffstat (limited to 'lib/base/message.cpp')
| -rw-r--r-- | lib/base/message.cpp | 22 |
1 files changed, 8 insertions, 14 deletions
diff --git a/lib/base/message.cpp b/lib/base/message.cpp index dafbf3f8..48fcd210 100644 --- a/lib/base/message.cpp +++ b/lib/base/message.cpp @@ -17,25 +17,19 @@ eMessagePump::~eMessagePump() int eMessagePump::send(const void *data, int len) { - if (ismt) - content.lock(len); - return ::write(fd[1], data, len)<0; + int wr = ::write(fd[1], data, len); + if (ismt && wr > 0) + content.lock(wr); + return wr<0; } int eMessagePump::recv(void *data, int len) { unsigned char*dst=(unsigned char*)data; - while (len) - { - if (ismt) - content.unlock(len); - int r=::read(fd[0], dst, len); - if (r<0) - return r; - dst+=r; - len-=r; - } - return 0; + int recv=::read(fd[0], dst, len); + if (recv > 0 && ismt) + content.unlock(recv); + return recv; } int eMessagePump::getInputFD() const |
