diff options
author | Andreas Huber <andih@google.com> | 2012-10-01 11:26:30 -0700 |
---|---|---|
committer | Andreas Huber <andih@google.com> | 2012-10-01 11:26:30 -0700 |
commit | ad0d97c7cf620e96a0b088dd9461645a3f8900b7 (patch) | |
tree | 83c354a2a43102ce1e58a191c1abc41b19b4dd69 /media/libstagefright/wifi-display/source/WifiDisplaySource.h | |
parent | 0e1d71641624c641a0a1abe4098943f5a42c6f94 (diff) | |
download | frameworks_av-ad0d97c7cf620e96a0b088dd9461645a3f8900b7.zip frameworks_av-ad0d97c7cf620e96a0b088dd9461645a3f8900b7.tar.gz frameworks_av-ad0d97c7cf620e96a0b088dd9461645a3f8900b7.tar.bz2 |
Perform an orderly shutdown if possible, force disconnect if necessary
wait for up to 2 secs for the dongle to send us a "TEARDOWN", after that
forcibly shutdown the connection.
Change-Id: Ie049857cd468b7af6986d6305f725c54571b2276
related-to-bug: 7258622
Diffstat (limited to 'media/libstagefright/wifi-display/source/WifiDisplaySource.h')
-rw-r--r-- | media/libstagefright/wifi-display/source/WifiDisplaySource.h | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/media/libstagefright/wifi-display/source/WifiDisplaySource.h b/media/libstagefright/wifi-display/source/WifiDisplaySource.h index ade623a..8c043cd 100644 --- a/media/libstagefright/wifi-display/source/WifiDisplaySource.h +++ b/media/libstagefright/wifi-display/source/WifiDisplaySource.h @@ -55,6 +55,18 @@ private: struct HDCPObserver; #endif + enum State { + INITIALIZED, + AWAITING_CLIENT_CONNECTION, + AWAITING_CLIENT_SETUP, + AWAITING_CLIENT_PLAY, + ABOUT_TO_PLAY, + PLAYING, + AWAITING_CLIENT_TEARDOWN, + STOPPING, + STOPPED, + }; + enum { kWhatStart, kWhatRTSPNotify, @@ -64,6 +76,7 @@ private: kWhatKeepAlive, kWhatHDCPNotify, kWhatFinishStop2, + kWhatTeardownTriggerTimedOut, }; struct ResponseID { @@ -82,11 +95,18 @@ private: static const int64_t kReaperIntervalUs = 1000000ll; + // We request that the dongle send us a "TEARDOWN" in order to + // perform an orderly shutdown. We're willing to wait up to 2 secs + // for this message to arrive, after that we'll force a disconnect + // instead. + static const int64_t kTeardownTriggerTimeouSecs = 2; + static const int64_t kPlaybackSessionTimeoutSecs = 30; static const int64_t kPlaybackSessionTimeoutUs = kPlaybackSessionTimeoutSecs * 1000000ll; + State mState; sp<ANetworkSession> mNetSession; sp<IRemoteDisplayClient> mClient; struct in_addr mInterfaceAddr; |