diff options
| author | David 'Digit' Turner <digit@android.com> | 2011-05-03 16:21:12 +0200 |
|---|---|---|
| committer | David 'Digit' Turner <digit@android.com> | 2011-05-03 16:21:12 +0200 |
| commit | 892a6306e73f4ae1aeeb38387637412ddb7e6632 (patch) | |
| tree | be5abad2018261f2399669aff17588ee1f7eac9e /tools/emulator/opengl/system/OpenglSystemCommon/HostConnection.cpp | |
| parent | 7b73c9f1d3dc4107037d5f8e06be8b302ed6f4fb (diff) | |
emulator: opengl: Use QEMU pipe.
This patch modifies the guest libraries to use the new
fast qemu "opengles" pipe to communicate with the host
renderer process.
Note that the renderer is still listening on a TCP socket
on port 22468.
Change-Id: I6ab84f972a8024e1fdababa4615d0650c8d461bf
Conflicts:
tools/emulator/opengl/tests/gles_android_wrapper/Android.mk
tools/emulator/opengl/tests/gles_android_wrapper/ServerConnection.h
Diffstat (limited to 'tools/emulator/opengl/system/OpenglSystemCommon/HostConnection.cpp')
| -rw-r--r-- | tools/emulator/opengl/system/OpenglSystemCommon/HostConnection.cpp | 48 |
1 files changed, 34 insertions, 14 deletions
diff --git a/tools/emulator/opengl/system/OpenglSystemCommon/HostConnection.cpp b/tools/emulator/opengl/system/OpenglSystemCommon/HostConnection.cpp index c87724700..bfb43f99e 100644 --- a/tools/emulator/opengl/system/OpenglSystemCommon/HostConnection.cpp +++ b/tools/emulator/opengl/system/OpenglSystemCommon/HostConnection.cpp @@ -15,12 +15,16 @@ */ #include "HostConnection.h" #include "TcpStream.h" +#include "QemuPipeStream.h" #include "ThreadInfo.h" #include <cutils/log.h> #define STREAM_BUFFER_SIZE 4*1024*1024 #define STREAM_PORT_NUM 4141 +/* Set to 1 to use a QEMU pipe, or 0 for a TCP connection */ +#define USE_QEMU_PIPE 1 + HostConnection::HostConnection() : m_stream(NULL), m_glEnc(NULL), @@ -37,36 +41,52 @@ HostConnection::~HostConnection() HostConnection *HostConnection::get() { + /* TODO: Make this configurable with a system property */ + const int useQemuPipe = USE_QEMU_PIPE; + // Get thread info EGLThreadInfo *tinfo = getEGLThreadInfo(); if (!tinfo) { return NULL; } - // - // create new host connection for that thread if needed - // if (tinfo->hostConn == NULL) { HostConnection *con = new HostConnection(); if (NULL == con) { return NULL; } - TcpStream *stream = new TcpStream(STREAM_BUFFER_SIZE); - if (!stream) { - LOGE("Failed to create TcpStream for host connection!!!\n"); - delete con; - return NULL; + if (useQemuPipe) { + QemuPipeStream *stream = new QemuPipeStream(STREAM_BUFFER_SIZE); + if (!stream) { + LOGE("Failed to create QemuPipeStream for host connection!!!\n"); + delete con; + return NULL; + } + if (stream->connect() < 0) { + LOGE("Failed to connect to host !!!\n"); + delete con; + return NULL; + } + con->m_stream = stream; } + else /* !useQemuPipe */ + { + TcpStream *stream = new TcpStream(STREAM_BUFFER_SIZE); + if (!stream) { + LOGE("Failed to create TcpStream for host connection!!!\n"); + delete con; + return NULL; + } - if (stream->connect("10.0.2.2", STREAM_PORT_NUM) < 0) { - LOGE("Failed to connect to host !!!\n"); - delete con; - return NULL; + if (stream->connect("10.0.2.2", STREAM_PORT_NUM) < 0) { + LOGE("Failed to connect to host !!!\n"); + delete con; + return NULL; + } + con->m_stream = stream; } LOGD("Host Connection established \n"); - - con->m_stream = stream; tinfo->hostConn = con; } |
