diff options
author | Andrew Hsieh <andrewhsieh@google.com> | 2012-06-06 00:07:46 -0700 |
---|---|---|
committer | android code review <noreply-gerritcodereview@google.com> | 2012-06-06 00:07:46 -0700 |
commit | cf9ba9a06006592bf47ce5837188986172e1a925 (patch) | |
tree | 6b63018a3c4bc6a42e61ae81f41f95a00910a27e /android | |
parent | 9bc1031e1c1bd24c23f3394fc0b7cba170dac8a3 (diff) | |
parent | 33f5c65179d1d6608463aec013c30e18811913c8 (diff) | |
download | external_qemu-cf9ba9a06006592bf47ce5837188986172e1a925.zip external_qemu-cf9ba9a06006592bf47ce5837188986172e1a925.tar.gz external_qemu-cf9ba9a06006592bf47ce5837188986172e1a925.tar.bz2 |
Merge "Mark gles pipe connected after callback invoked"
Diffstat (limited to 'android')
-rw-r--r-- | android/hw-pipe-net.c | 18 |
1 files changed, 16 insertions, 2 deletions
diff --git a/android/hw-pipe-net.c b/android/hw-pipe-net.c index 5a25401..3e8dc70 100644 --- a/android/hw-pipe-net.c +++ b/android/hw-pipe-net.c @@ -204,10 +204,9 @@ netPipe_initFromAddress( void* hwpipe, const SockAddress* address, Looper* loop } loopIo_init(pipe->io, looper, fd, netPipe_io_func, pipe); - asyncConnector_init(pipe->connector, address, pipe->io); + status = asyncConnector_init(pipe->connector, address, pipe->io); pipe->state = STATE_CONNECTING; - status = asyncConnector_run(pipe->connector); if (status == ASYNC_ERROR) { D("%s: Could not connect to socket: %s", __FUNCTION__, errno_str); @@ -234,6 +233,17 @@ netPipe_closeFromGuest( void* opaque ) netPipe_free(pipe); } +static int netPipeReadySend(NetPipe *pipe) +{ + if (pipe->state == STATE_CONNECTED) + return 0; + else if (pipe->state == STATE_CONNECTING) + return PIPE_ERROR_AGAIN; + else if (pipe->hwpipe == NULL) + return PIPE_ERROR_INVAL; + else + return PIPE_ERROR_IO; +} static int netPipe_sendBuffers( void* opaque, const GoldfishPipeBuffer* buffers, int numBuffers ) @@ -245,6 +255,10 @@ netPipe_sendBuffers( void* opaque, const GoldfishPipeBuffer* buffers, int numBuf const GoldfishPipeBuffer* buff = buffers; const GoldfishPipeBuffer* buffEnd = buff + numBuffers; + ret = netPipeReadySend(pipe); + if (ret != 0) + return ret; + for (; buff < buffEnd; buff++) count += buff->size; |