diff -r e5618cc85d74 -r 6c158198356e javauis/lcdui_akn/javalcdui/src/CMIDToLcduiObserver.cpp --- a/javauis/lcdui_akn/javalcdui/src/CMIDToLcduiObserver.cpp Thu Jul 15 18:31:06 2010 +0300 +++ b/javauis/lcdui_akn/javalcdui/src/CMIDToLcduiObserver.cpp Thu Aug 19 09:48:13 2010 +0300 @@ -75,7 +75,7 @@ // #ifdef RD_JAVA_NGA_ENABLED void CMIDToLcduiObserver::RegisterControl( - CCoeControl& aControl, MDirectContainer* aCallbackContainer /*= NULL*/) + CCoeControl& aControl, MDirectContainer* /*aCallbackContainer*/) #else void CMIDToLcduiObserver::RegisterControl(CCoeControl& aControl) #endif @@ -90,18 +90,6 @@ // Appending of control failed DEBUG("CMIDToLcduiObserver::RegisterControl - Append failed"); } - -#ifdef RD_JAVA_NGA_ENABLED - if (aCallbackContainer) - { - TToLcduiEventData data; - data.iType = ENotifyContentAdded; - data.iContainer = aCallbackContainer; - data.iControl = &aControl; - data.iConsumer = NULL; - iEventQueue.Send(data); - } -#endif } } @@ -164,7 +152,7 @@ TToLcduiEventData data; data.iType = EDSAResourcesCallbackEvent; data.iControl = &aControl; - data.iConsumer = &aConsumer; + data.iConsumer = (void*)&aConsumer; // Add event to the queue iEventQueue.Send(data); @@ -187,7 +175,7 @@ // Prepare event data TToLcduiEventData data; data.iType = EUICallbackEvent; - data.iConsumer = &aConsumer; + data.iConsumer = (void*)&aConsumer; data.iId = aCallbackId; // Add event to the queue @@ -215,10 +203,13 @@ DoFlushControl(data.iControl, data.iRect); break; case EDSAResourcesCallbackEvent: - DoInvokeDSAResourcesCallback(data.iControl, data.iConsumer); + DoInvokeDSAResourcesCallback(data.iControl, (MUiEventConsumer*)data.iConsumer); break; case EUICallbackEvent: - DoInvokeUICallback(data.iConsumer, data.iId); + DoInvokeUICallback((MUiEventConsumer*)data.iConsumer, data.iId); + break; + case ELcduiEvent: + DoInvokeLcduiEvent((MMIDLcduiEventConsumer*)data.iConsumer,data.iId); break; #ifdef RD_JAVA_NGA_ENABLED case ENotifyContentAdded: @@ -286,6 +277,15 @@ } } +void CMIDToLcduiObserver::DoInvokeLcduiEvent( + MMIDLcduiEventConsumer* aConsumer, + TInt aCallbackId) +{ + if (aConsumer) + { + aConsumer->HandleLcduiEvent(aCallbackId); + } +} // --------------------------------------------------------------------------- // CMIDToLcduiObserver::DoInvokeUICallback @@ -299,6 +299,7 @@ aConsumer->MdcUICallback(aCallbackId); } + #ifdef RD_JAVA_NGA_ENABLED // --------------------------------------------------------------------------- // CMIDToLcduiObserver::DoInvokeNotifyContentAdded @@ -314,3 +315,26 @@ } } #endif + +// --------------------------------------------------------------------------- +// CSwtDcObserver::InvokeDcEvent +// Asynchronously sends an event into a consumer. +// The call may origin in other than eswt thread. +// --------------------------------------------------------------------------- +// +void CMIDToLcduiObserver::InvokeLcduiEvent( + MMIDLcduiEventConsumer& aConsumer, + TInt aCallbackId) +{ + // Can run in non lcdui thread + + // Prepare event data + TToLcduiEventData data; + data.iType = ELcduiEvent; + data.iConsumer = (void*)&aConsumer; + data.iId = aCallbackId; + + // Add event to the queue + iEventQueue.Send(data); +} +