diff options
author | TreeHugger Robot <treehugger-gerrit@google.com> | 2016-04-21 01:35:28 +0000 |
---|---|---|
committer | Android (Google) Code Review <android-gerrit@google.com> | 2016-04-21 01:35:28 +0000 |
commit | 0b775f08887d4d52e57a06c6a8680aa10a1c7bb8 (patch) | |
tree | 6ad42c75b93c4097e59a10af1d4fbd072b0f329c /service | |
parent | de68b305e798943904671f1dd56413b51fc479cb (diff) | |
parent | 956fd40b6145c4aba9160e10bfc1ea609873ce8d (diff) |
Merge "WifiLogger: fix bug in HAL callback registration" into nyc-dev
Diffstat (limited to 'service')
-rw-r--r-- | service/java/com/android/server/wifi/WifiLogger.java | 20 |
1 files changed, 13 insertions, 7 deletions
diff --git a/service/java/com/android/server/wifi/WifiLogger.java b/service/java/com/android/server/wifi/WifiLogger.java index 047794f98..f46440c10 100644 --- a/service/java/com/android/server/wifi/WifiLogger.java +++ b/service/java/com/android/server/wifi/WifiLogger.java @@ -97,6 +97,7 @@ class WifiLogger extends BaseWifiLogger { "Driver state dump"; private int mLogLevel = VERBOSE_NO_LOG; + private boolean mIsLoggingEventHandlerRegistered; private WifiNative.RingBufferStatus[] mRingBuffers; private WifiNative.RingBufferStatus mPerPacketRingBuffer; private WifiStateMachine mWifiStateMachine; @@ -107,6 +108,7 @@ class WifiLogger extends BaseWifiLogger { WifiStateMachine wifiStateMachine, WifiNative wifiNative) { mWifiStateMachine = wifiStateMachine; mWifiNative = wifiNative; + mIsLoggingEventHandlerRegistered = false; } @Override @@ -115,8 +117,9 @@ class WifiLogger extends BaseWifiLogger { mDriverVersion = mWifiNative.getDriverVersion(); mSupportedFeatureSet = mWifiNative.getSupportedLoggerFeatureSet(); - if (mLogLevel == VERBOSE_NO_LOG) - mWifiNative.setLoggingEventHandler(mHandler); + if (!mIsLoggingEventHandlerRegistered) { + mIsLoggingEventHandlerRegistered = mWifiNative.setLoggingEventHandler(mHandler); + } if (verboseEnabled) { mLogLevel = VERBOSE_LOG_WITH_WAKEUP; @@ -163,14 +166,17 @@ class WifiLogger extends BaseWifiLogger { @Override public synchronized void stopLogging() { - if (mLogLevel != VERBOSE_NO_LOG) { - //resetLogHandler only can be used when you terminate all logging since all handler will - //be removed. This also stop alert logging - if(!mWifiNative.resetLogHandler()) { + if (mIsLoggingEventHandlerRegistered) { + if (!mWifiNative.resetLogHandler()) { Log.e(TAG, "Fail to reset log handler"); } else { - if (DBG) Log.d(TAG,"Reset log handler"); + if (DBG) Log.d(TAG, "Reset log handler"); } + // Clear mIsLoggingEventHandlerRegistered even if resetLogHandler() failed, because + // the log handler is in an indeterminate state. + mIsLoggingEventHandlerRegistered = false; + } + if (mLogLevel != VERBOSE_NO_LOG) { stopLoggingAllBuffers(); mRingBuffers = null; mLogLevel = VERBOSE_NO_LOG; |