diff -r 924385140d98 -r c2c61fdca848 mediakeys/MMKeyBearer/src/MMKeyBearerImplementation.cpp --- a/mediakeys/MMKeyBearer/src/MMKeyBearerImplementation.cpp Tue Aug 31 15:24:25 2010 +0300 +++ b/mediakeys/MMKeyBearer/src/MMKeyBearerImplementation.cpp Wed Sep 01 12:24:48 2010 +0100 @@ -26,7 +26,6 @@ #include #include #include // Property values -#include // Include this once it is exported // #include @@ -75,7 +74,7 @@ delete iMediaKeyObserver; delete iAccessoryVolKeyObserver; delete iUSBFileTransferObserver; - delete iKeyguardAccess; + iAknServer.Close(); } // --------------------------------------------------------- @@ -85,10 +84,11 @@ // CMMKeyBearer::CMMKeyBearer(TBearerParams& aParams) : CRemConBearerPlugin(aParams), - iUSBFileTransfer(KUsbWatcherSelectedPersonalityNone) + iUSBFileTransfer(KUsbWatcherSelectedPersonalityNone), + iAknServerConnected(EFalse) { FUNC_LOG; - + //Pass } @@ -105,7 +105,6 @@ TRemConAddress addr; addr.BearerUid() = Uid(); TInt err = Observer().ConnectIndicate(addr); - iKeyguardAccess = CKeyguardAccessApi::NewL(); // Start Active object for listening key events from P&S TRAP_AND_LEAVE( @@ -343,6 +342,12 @@ INFO_3( "Received key: enumValue = %d, keyType = %d, usbFileTransfer = %d", aEnumValue, aKeyType, iUSBFileTransfer ); + //Start the listener once again + if (aKeyType == ESideVolumeKeys) + { + iMMKeyBearerObserver->Start(); + } + // Mediakeys must be disabled when MTP (Music Transfer) is happening. if (aKeyType == EFileTransferStatus) { @@ -362,20 +367,25 @@ // If events are from accessory device,then do not check for keypadlock if (aKeyType != EAccessoryVolumeKeys && aKeyType != ESideVolumeKeys ) { - - TInt err=iKeyguardAccess->ShowKeysLockedNote(); + TBool keysLocked = EFalse; + if (!(iAknServerConnected)) // Connect to server for first time + { + if(iAknServer.Connect() == KErrNone) + { + iAknServerConnected = ETrue; + } + else if (aKeyType == EMediaKeys) // If connection fails, then return + { + iMediaKeyObserver->Start(); + return ; + } + } + iAknServer.ShowKeysLockedNote(keysLocked); - if (err==KErrNone) + if (keysLocked && aKeyType == EMediaKeys) { // Device is locked , Discard the key event - - //Start the listener once again - - if (aKeyType == EMediaKeys) - { - iMediaKeyObserver->Start(); - } - + iMediaKeyObserver->Start(); return; } } @@ -408,11 +418,7 @@ TInt aError = Observer().NewCommand(addr); //Start the listener once again - if (aKeyType == ESideVolumeKeys) - { - iMMKeyBearerObserver->Start(); - } - else if (aKeyType == EMediaKeys) + if (aKeyType == EMediaKeys) { iMediaKeyObserver->Start(); }