From ab71450fb087b7649286b5b3d0fb471f8922518a Mon Sep 17 00:00:00 2001 From: Michael Rennie Date: Thu, 15 Sep 2016 13:42:05 +0100 Subject: [PATCH] Add offset to Android network ports, to differentiate from localhost. This requires adb forward to include the offset, for example: adb forward tcp:38970 tcp:38920 adb forward tcp:39970 tcp:39920 --- renderdoc/common/globalconfig.h | 1 + renderdoc/core/remote_server.cpp | 9 ++++++--- renderdoc/replay/entry_points.cpp | 21 +++++++++++++-------- 3 files changed, 20 insertions(+), 11 deletions(-) diff --git a/renderdoc/common/globalconfig.h b/renderdoc/common/globalconfig.h index 818de73c7..52862c126 100644 --- a/renderdoc/common/globalconfig.h +++ b/renderdoc/common/globalconfig.h @@ -39,6 +39,7 @@ enum RenderDoc_FirstTargetControlPort = 38920, RenderDoc_LastTargetControlPort = RenderDoc_FirstTargetControlPort + 7, RenderDoc_RemoteServerPort = 39920, + RenderDoc_AndroidPortOffset = 50, }; ///////////////////////////////////////////////// diff --git a/renderdoc/core/remote_server.cpp b/renderdoc/core/remote_server.cpp index ec9873a24..5268cf71c 100644 --- a/renderdoc/core/remote_server.cpp +++ b/renderdoc/core/remote_server.cpp @@ -1187,16 +1187,19 @@ RENDERDOC_CreateRemoteServerConnection(const char *host, uint32_t port, RemoteSe if(host != NULL && host[0] != '\0') s = host; + if(port == 0) + port = RENDERDOC_GetDefaultRemoteServerPort(); + if(host != NULL && !strncmp(host, "adb:", 4)) { s = "127.0.0.1"; + if(port == RENDERDOC_GetDefaultRemoteServerPort()) + port += RenderDoc_AndroidPortOffset; + // could parse out an (optional) device name from host+4 here. } - if(port == 0) - port = RENDERDOC_GetDefaultRemoteServerPort(); - Network::Socket *sock = NULL; if(s != "-") diff --git a/renderdoc/replay/entry_points.cpp b/renderdoc/replay/entry_points.cpp index c7fec8a56..3e05ef55f 100644 --- a/renderdoc/replay/entry_points.cpp +++ b/renderdoc/replay/entry_points.cpp @@ -477,13 +477,6 @@ extern "C" RENDERDOC_API uint32_t RENDERDOC_CC RENDERDOC_EnumerateRemoteTargets( if(host != NULL && host[0] != '\0') s = host; - if(host != NULL && !strncmp(host, "adb:", 4)) - { - s = "127.0.0.1"; - - // could parse out an (optional) device name from host+4 here. - } - // initial case is we're called with 0, start with the first port. // otherwise we're called with the last successful ident, so increment // before continuing to enumerate. @@ -492,7 +485,19 @@ extern "C" RENDERDOC_API uint32_t RENDERDOC_CC RENDERDOC_EnumerateRemoteTargets( else nextIdent++; - for(; nextIdent <= RenderDoc_LastTargetControlPort; nextIdent++) + uint32_t lastIdent = RenderDoc_LastTargetControlPort; + if(host != NULL && !strncmp(host, "adb:", 4)) + { + if(nextIdent == RenderDoc_FirstTargetControlPort) + nextIdent += RenderDoc_AndroidPortOffset; + lastIdent += RenderDoc_AndroidPortOffset; + + s = "127.0.0.1"; + + // could parse out an (optional) device name from host+4 here. + } + + for(; nextIdent <= lastIdent; nextIdent++) { Network::Socket *sock = Network::CreateClientSocket(s.c_str(), (uint16_t)nextIdent, 250);