Only run the wifi display RTSP server on demand, and only on the wifi direct

interface.

Change-Id: I7d3c44cb79cd40e73499f2d7ccf35c69b628e6d7
diff --git a/media/libmediaplayerservice/MediaPlayerService.cpp b/media/libmediaplayerservice/MediaPlayerService.cpp
index 5fe446f..166bae9 100644
--- a/media/libmediaplayerservice/MediaPlayerService.cpp
+++ b/media/libmediaplayerservice/MediaPlayerService.cpp
@@ -279,13 +279,17 @@
     return new Crypto;
 }
 
-status_t MediaPlayerService::enableRemoteDisplay(bool enable) {
+status_t MediaPlayerService::enableRemoteDisplay(const char *iface) {
     Mutex::Autolock autoLock(mLock);
 
-    if (enable && mRemoteDisplay == NULL) {
+    if (iface != NULL) {
+        if (mRemoteDisplay != NULL) {
+            return INVALID_OPERATION;
+        }
+
         mRemoteDisplay = new RemoteDisplay;
 
-        status_t err = mRemoteDisplay->start();
+        status_t err = mRemoteDisplay->start(iface);
 
         if (err != OK) {
             mRemoteDisplay.clear();
@@ -293,7 +297,9 @@
         }
 
         return OK;
-    } else if (!enable && mRemoteDisplay != NULL) {
+    }
+
+    if (mRemoteDisplay != NULL) {
         mRemoteDisplay->stop();
         mRemoteDisplay.clear();
     }
diff --git a/media/libmediaplayerservice/MediaPlayerService.h b/media/libmediaplayerservice/MediaPlayerService.h
index 8fbc5d5..2577c58 100644
--- a/media/libmediaplayerservice/MediaPlayerService.h
+++ b/media/libmediaplayerservice/MediaPlayerService.h
@@ -248,7 +248,7 @@
     virtual sp<IMemory>         decode(int fd, int64_t offset, int64_t length, uint32_t *pSampleRate, int* pNumChannels, audio_format_t* pFormat);
     virtual sp<IOMX>            getOMX();
     virtual sp<ICrypto>         makeCrypto();
-    virtual status_t            enableRemoteDisplay(bool enable);
+    virtual status_t            enableRemoteDisplay(const char *iface);
 
     virtual status_t            dump(int fd, const Vector<String16>& args);
 
diff --git a/media/libmediaplayerservice/RemoteDisplay.cpp b/media/libmediaplayerservice/RemoteDisplay.cpp
index 855824a..49f7278 100644
--- a/media/libmediaplayerservice/RemoteDisplay.cpp
+++ b/media/libmediaplayerservice/RemoteDisplay.cpp
@@ -32,13 +32,11 @@
 RemoteDisplay::~RemoteDisplay() {
 }
 
-status_t RemoteDisplay::start() {
+status_t RemoteDisplay::start(const char *iface) {
     mNetSession->start();
     mLooper->start();
 
-    // XXX replace with 8554 for bcom dongle (it doesn't respect the
-    // default port or the one advertised in the wfd IE).
-    mSource->start(WifiDisplaySource::kWifiDisplayDefaultPort);
+    mSource->start(iface);
 
     return OK;
 }
diff --git a/media/libmediaplayerservice/RemoteDisplay.h b/media/libmediaplayerservice/RemoteDisplay.h
index 6b37afb..3607d06 100644
--- a/media/libmediaplayerservice/RemoteDisplay.h
+++ b/media/libmediaplayerservice/RemoteDisplay.h
@@ -31,7 +31,7 @@
 struct RemoteDisplay : public RefBase {
     RemoteDisplay();
 
-    status_t start();
+    status_t start(const char *iface);
     status_t stop();
 
 protected: