summaryrefslogtreecommitdiff
path: root/tools/emulator/opengl/system/OpenglSystemCommon/HostConnection.cpp
diff options
context:
space:
mode:
authorDavid 'Digit' Turner <digit@android.com>2011-05-03 16:21:12 +0200
committerDavid 'Digit' Turner <digit@android.com>2011-05-03 16:21:12 +0200
commit892a6306e73f4ae1aeeb38387637412ddb7e6632 (patch)
treebe5abad2018261f2399669aff17588ee1f7eac9e /tools/emulator/opengl/system/OpenglSystemCommon/HostConnection.cpp
parent7b73c9f1d3dc4107037d5f8e06be8b302ed6f4fb (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.cpp48
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;
}