windowing/windowserver/nga/SERVER/EVENT.CPP
changeset 136 62bb7c97884c
parent 121 d72fc2aace31
--- 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__)