From 0b73d4730202fcad53aefc4314a06e7b95f442f0 Mon Sep 17 00:00:00 2001 From: Andreas Huber Date: Wed, 5 Sep 2012 10:26:52 -0700 Subject: Expose an IRemoteDisplay to trigger wifi display connections setup and feedback. Change-Id: I7602cda0e38073c9f0e63fa4de238ca0d4b4ce8e --- media/libmediaplayerservice/MediaPlayerService.cpp | 15 +++------------ media/libmediaplayerservice/RemoteDisplay.cpp | 21 +++++++++------------ media/libmediaplayerservice/RemoteDisplay.h | 11 +++++------ 3 files changed, 17 insertions(+), 30 deletions(-) (limited to 'media/libmediaplayerservice') diff --git a/media/libmediaplayerservice/MediaPlayerService.cpp b/media/libmediaplayerservice/MediaPlayerService.cpp index ae55642..9005500 100644 --- a/media/libmediaplayerservice/MediaPlayerService.cpp +++ b/media/libmediaplayerservice/MediaPlayerService.cpp @@ -283,8 +283,7 @@ sp MediaPlayerService::makeCrypto() { sp MediaPlayerService::listenForRemoteDisplay( const sp& client, const String8& iface) { - // TODO: implement me! - return NULL; + return new RemoteDisplay(client, iface.string());; } status_t MediaPlayerService::enableRemoteDisplay(const char *iface) { @@ -295,20 +294,12 @@ status_t MediaPlayerService::enableRemoteDisplay(const char *iface) { return INVALID_OPERATION; } - mRemoteDisplay = new RemoteDisplay; - - status_t err = mRemoteDisplay->start(iface); - - if (err != OK) { - mRemoteDisplay.clear(); - return err; - } - + mRemoteDisplay = new RemoteDisplay(NULL /* client */, iface); return OK; } if (mRemoteDisplay != NULL) { - mRemoteDisplay->stop(); + mRemoteDisplay->disconnect(); mRemoteDisplay.clear(); } diff --git a/media/libmediaplayerservice/RemoteDisplay.cpp b/media/libmediaplayerservice/RemoteDisplay.cpp index 49f7278..1cc605e 100644 --- a/media/libmediaplayerservice/RemoteDisplay.cpp +++ b/media/libmediaplayerservice/RemoteDisplay.cpp @@ -19,29 +19,27 @@ #include "ANetworkSession.h" #include "source/WifiDisplaySource.h" +#include + namespace android { -RemoteDisplay::RemoteDisplay() - : mInitCheck(NO_INIT), - mLooper(new ALooper), +RemoteDisplay::RemoteDisplay( + const sp &client, const char *iface) + : mLooper(new ALooper), mNetSession(new ANetworkSession), - mSource(new WifiDisplaySource(mNetSession)) { + mSource(new WifiDisplaySource(mNetSession, client)) { mLooper->registerHandler(mSource); -} - -RemoteDisplay::~RemoteDisplay() { -} -status_t RemoteDisplay::start(const char *iface) { mNetSession->start(); mLooper->start(); mSource->start(iface); +} - return OK; +RemoteDisplay::~RemoteDisplay() { } -status_t RemoteDisplay::stop() { +status_t RemoteDisplay::disconnect() { mSource->stop(); mLooper->stop(); @@ -51,4 +49,3 @@ status_t RemoteDisplay::stop() { } } // namespace android - diff --git a/media/libmediaplayerservice/RemoteDisplay.h b/media/libmediaplayerservice/RemoteDisplay.h index 3607d06..63c5286 100644 --- a/media/libmediaplayerservice/RemoteDisplay.h +++ b/media/libmediaplayerservice/RemoteDisplay.h @@ -18,6 +18,7 @@ #define REMOTE_DISPLAY_H_ +#include #include #include #include @@ -26,20 +27,18 @@ namespace android { struct ALooper; struct ANetworkSession; +struct IRemoteDisplayClient; struct WifiDisplaySource; -struct RemoteDisplay : public RefBase { - RemoteDisplay(); +struct RemoteDisplay : public BnRemoteDisplay { + RemoteDisplay(const sp &client, const char *iface); - status_t start(const char *iface); - status_t stop(); + virtual status_t disconnect(); protected: virtual ~RemoteDisplay(); private: - status_t mInitCheck; - sp mNetLooper; sp mLooper; sp mNetSession; -- cgit v1.1