diff -r d72fc2aace31 -r 62bb7c97884c windowing/windowserver/nga/SERVER/EVENT.CPP --- a/windowing/windowserver/nga/SERVER/EVENT.CPP Tue Jul 20 13:27:44 2010 +0300 +++ b/windowing/windowserver/nga/SERVER/EVENT.CPP Fri Jul 30 11:41:40 2010 +0300 @@ -34,6 +34,7 @@ #include "debugbar.h" #include "advancedpointereventhelper.h" #include "graphics/wsgraphicdrawerinternal.h" +#include "debughelper.h" GLREF_D CDebugLogBase *wsDebugLog; @@ -384,6 +385,9 @@ #else iEventHandlers.AppendL(TRawEventHandler(aEventHandler, aAdvancedPointersEnabled)); //Shouldn't leave #endif +#ifdef LOG_WSERV_EVENTS + RDebug::Printf("_WSEVENT_POINTER: TWindowServerEvent::AddEventHandler Added handler = %d AdvancedPointerEnabled = %d", iEventHandlers.Count(),aAdvancedPointersEnabled); +#endif } void TWindowServerEvent::RemoveEventHandler(const MEventHandler *aEventHandler) @@ -394,6 +398,9 @@ { if (iEventHandlers[ii].iEventHandler==aEventHandler) { +#ifdef LOG_WSERV_EVENTS + RDebug::Printf("_WSEVENT_POINTER: TWindowServerEvent::RemoveEventHandler Removed handler = %d",ii); +#endif if (iEventHandlerCount>0) { iBinaryFlags |= ERemovedEventHandlerWhileProcessingRawEvents; @@ -711,6 +718,9 @@ void TWindowServerEvent::QueueKeyEvent(CWsWindowGroup *aWin, TWsEvent &aEvent, TWservEventPriorities aPriority) { +#ifdef LOG_WSERV_EVENTS + RDebug::Print(_L("_WSEVENT_KEY: TWindowServerEvent::QueueKeyEvent, Queuing event name %S for application read, window handle: %d"), &WsEventName(aEvent), CWsTop::FocusWindowGroup()->ClientHandle()); +#endif aEvent.SetTimeNow(); aWin->EventQueue()->QueueEvent(aEvent, aPriority); } @@ -981,6 +991,9 @@ */ void TWindowServerEvent::QueueKeyUpDown(const TRawEvent &aRawEvent) { +#ifdef LOG_WSERV_EVENTS + RDebug::Print(_L("_WSEVENT_KEY: TWindowServerEvent::QueueKeyUpDown, Event Name: %S, Scan code: %d"), &RawEventName(aRawEvent), aRawEvent.ScanCode()); +#endif TEventCode type = aRawEvent.Type() == TRawEvent::EKeyUp ? EEventKeyUp : EEventKeyDown; // Check for key up/down capture @@ -1159,7 +1172,11 @@ TBool isPointerEvent = TWsPointer::IsPointerEventType(eventType); if (isPointerEvent) { - TWsPointer::UpdatePrimaryPointer(aRawEvent); +#ifdef LOG_WSERV_EVENTS + RDebug::Print(_L("_WSEVENT_POINTER: TWindowServerEvent::ProcessRawEvent EventName = %S PointerNumber = %d PrimaryPointerNumber = %d Coordinates = ( %d, %d )"), + &RawEventName(aRawEvent),aRawEvent.PointerNumber(),TWsPointer::PrimaryPointer(),aRawEvent.Pos().iX,aRawEvent.Pos().iY); +#endif + TWsPointer::UpdatePrimaryPointer(aRawEvent); } TInt count=iEventHandlers.Count(); TInt ii; @@ -1176,9 +1193,15 @@ { if (CClick::IsHandler()) { +#ifdef LOG_WSERV_EVENTS + RDebug::Print(_L("_WSEVENT_KEY: Send event %S for Key Click"), &RawEventName(aRawEvent)); +#endif SendEventToKeyClick(aRawEvent); } eventHandled = ETrue; +#ifdef LOG_WSERV_EVENTS + RDebug::Printf("_WSEVENT_POINTER: TWindowServerEvent::ProcessRawEvent Event Consumed by ANIM.dll Handler No = %d Advanced Pointer Enabled = %d",ii,handler.iAdvancedPointersEnabled); +#endif break; } } @@ -1195,12 +1218,45 @@ } if (eventHandled) { +#ifdef LOG_WSERV_EVENTS + RDebug::Printf("_WSEVENT: Event is already handled by anim dll not by window server"); + // This is to determine when we press the power button which bring power dialog + // whether it is a pointer event or key event + // Also when we plugin the charging cable this is to determine whether it is a pointer event or key event + RDebug::Print(_L("_WSEVENT: RawEvent Name = %S"), &RawEventName(aRawEvent)); +#endif if (isPointerEvent) { - TWsPointer::RollbackPrimaryPointer(); +#ifdef LOG_WSERV_EVENTS + RDebug::Printf("_WSEVENT_POINTER: TWindowServerEvent::ProcessRawEvent Pointer Number= %d State = %x XY(%d,%d)",TWsPointer::iPointers[0].iNumber,TWsPointer::iPointers[0].iState,TWsPointer::iPointers[0].iPos.iX,TWsPointer::iPointers[0].iPos.iY); + RDebug::Printf("_WSEVENT_POINTER: TWindowServerEvent::ProcessRawEvent Pointer Number= %d State = %x XY(%d,%d)",TWsPointer::iPointers[1].iNumber,TWsPointer::iPointers[1].iState,TWsPointer::iPointers[1].iPos.iX,TWsPointer::iPointers[1].iPos.iY); +#endif + //Prevention of the phone pointer event "dead lock". + TPointerEvent::TType type; + TBool handled = ETrue; + GetPointerEvent(type, aRawEvent, handled); + switch(type) + { + case TPointerEvent::EButton1Down: + case TPointerEvent::EButton2Down: + case TPointerEvent::EButton3Down: + TWsPointer::iPointers[aRawEvent.PointerNumber()].iState = TWsPointer::EPointerStateDown; + break; + case TPointerEvent::EButton1Up: + case TPointerEvent::EButton2Up: + case TPointerEvent::EButton3Up: + TWsPointer::iPointers[aRawEvent.PointerNumber()].iState = TWsPointer::EPointerStateUp; + break; + case TPointerEvent::EOutOfRange: + TWsPointer::iPointers[aRawEvent.PointerNumber()].iState = TWsPointer::EPointerStateOutOfRange; + break; + default: + break; + } } return; } + switch(eventType) { case TRawEvent::ERedraw: @@ -1248,6 +1304,9 @@ break; case TRawEvent::EKeyDown: { +#ifdef LOG_WSERV_EVENTS + RDebug::Printf("_WSEVENT_KEY: TRawEvent::EKeyDown"); +#endif _LIT(KWSERVDebugLogKeyDownArrival,"Key down arrives %d"); CScreen* screen = CWsTop::Screen(); WS_ASSERT_ALWAYS(screen, EWsPanicNoScreen); @@ -1274,6 +1333,9 @@ break; case TRawEvent::EKeyUp: { +#ifdef LOG_WSERV_EVENTS + RDebug::Printf("_WSEVENT_KEY: TRawEvent::EKeyUp"); +#endif _LIT(KWSERVDebugLogKeyUpArrival,"Key up arrives %d"); CScreen* screen = CWsTop::Screen(); WS_ASSERT_ALWAYS(screen, EWsPanicNoScreen); @@ -1334,10 +1396,23 @@ default: break; } +#ifdef LOG_WSERV_EVENTS + RDebug::Printf("_WSEVENT_POINTER: TWindowServerEvent::ProcessRawEvent Number= %d State = %x XY(%d,%d)",TWsPointer::iPointers[0].iNumber,TWsPointer::iPointers[0].iState,TWsPointer::iPointers[0].iPos.iX,TWsPointer::iPointers[0].iPos.iY); + RDebug::Printf("_WSEVENT_POINTER: TWindowServerEvent::ProcessRawEvent Number= %d State = %x XY(%d,%d)",TWsPointer::iPointers[1].iNumber,TWsPointer::iPointers[1].iState,TWsPointer::iPointers[1].iPos.iX,TWsPointer::iPointers[1].iPos.iY); +#endif } void TWindowServerEvent::ProcessKeyEvent(const TKeyEvent &aKeyEvent,TInt aRepeats) { +#ifdef LOG_WSERV_EVENTS + RDebug::Printf("_WSEVENT_KEY: TWindowServerEvent::ProcessKeyEvent, key code: %d, repeat: %d", aKeyEvent.iCode, aRepeats); +#endif + TKeyData keyData; + keyData.iModifiers=aKeyEvent.iModifiers; + keyData.iApp=0; + keyData.iHandle=0; + keyData.iIsCaptureKey=EFalse; + keyData.iKeyCode=aKeyEvent.iCode; if (CKeyboardRepeat::IsAreadyActive()) { CKeyboardRepeat::CancelRepeat(NULL); @@ -1600,6 +1675,9 @@ void CRawEventReceiver::RunL() { +#ifdef LOG_WSERV_EVENTS + RDebug::Printf("_WSEVENT_KEY: CRawEventReceiver::RunL Entry point for event receiver"); +#endif //__PROFILE_START(11); if (TWsPointer::PreProcessDriverEvent(iEventBuf.Event() #if defined(__WINS__)