void SetMode(int32_t aMode) { if ((aMode == AUTOMOUNTER_DISABLE_WHEN_UNPLUGGED) && (mMode == AUTOMOUNTER_DISABLE)) { // If it's already disabled, then leave it as disabled. // AUTOMOUNTER_DISABLE_WHEN_UNPLUGGED implies "enabled until unplugged" aMode = AUTOMOUNTER_DISABLE; } if ((aMode == AUTOMOUNTER_DISABLE) && (mMode == AUTOMOUNTER_ENABLE) && IsUsbCablePluggedIn()) { // On many devices (esp non-Samsung), we can't force the disable, so we // need to defer until the USB cable is actually unplugged. // See bug 777043. // // Otherwise our attempt to disable it will fail, and we'll wind up in a bad // state where the AutoMounter thinks that Sharing has been turned off, but // the files are actually still being Shared because the attempt to unshare // failed. LOG("Attempting to disable UMS. Deferring until USB cable is unplugged."); aMode = AUTOMOUNTER_DISABLE_WHEN_UNPLUGGED; } if (aMode != mMode) { LOG("Changing mode from '%s' to '%s'", ModeStr(mMode), ModeStr(aMode)); mMode = aMode; DBG("Calling UpdateState due to mode set to %d", mMode); UpdateState(); } }
// DumpToDebugDisplay -------------------------------------------------------------------------------------- // ------------------ void plAvBrainClimb::DumpToDebugDisplay(int &x, int &y, int lineHeight, plDebugText &debugTxt) { debugTxt.DrawString(x, y, "Brain type: Climb"); y += lineHeight; const char * worldDir = WorldDirStr(fDesiredDirection); const char * modeStr = ModeStr(fCurMode); char buffy[256]; sprintf(buffy, "direction: %s mode: %s controlDir: %f", worldDir, modeStr, fControlDir); debugTxt.DrawString(x,y, buffy); y += lineHeight; IDumpClimbDirections(x, y, lineHeight, debugTxt); IDumpDismountDirections(x, y, lineHeight, debugTxt); IDumpBlockedDirections(x, y, lineHeight, debugTxt); fUp->DumpDebug(fUp == fCurStage, x, y, lineHeight, debugTxt); fDown->DumpDebug(fDown == fCurStage, x, y, lineHeight, debugTxt); fLeft->DumpDebug(fLeft == fCurStage, x, y, lineHeight, debugTxt); fRight->DumpDebug(fRight == fCurStage, x, y, lineHeight, debugTxt); fMountUp->DumpDebug(fMountUp == fCurStage, x, y, lineHeight, debugTxt); fMountDown->DumpDebug(fMountDown == fCurStage, x, y, lineHeight, debugTxt); fMountLeft->DumpDebug(fMountLeft == fCurStage, x, y, lineHeight, debugTxt); fMountRight->DumpDebug(fMountRight == fCurStage, x, y, lineHeight, debugTxt); fDismountUp->DumpDebug(fDismountUp == fCurStage, x, y, lineHeight, debugTxt); fDismountDown->DumpDebug(fDismountDown == fCurStage, x, y, lineHeight, debugTxt); fDismountLeft->DumpDebug(fDismountLeft == fCurStage, x, y, lineHeight, debugTxt); fDismountRight->DumpDebug(fDismountRight == fCurStage, x, y, lineHeight, debugTxt); fIdle->DumpDebug(fIdle == fCurStage, x, y, lineHeight, debugTxt); fRelease->DumpDebug(fRelease == fCurStage, x, y, lineHeight, debugTxt); fFallOff->DumpDebug(fFallOff == fCurStage, x, y, lineHeight, debugTxt); }