Applied patch 1, to provide a syborg specific minigui oby file.
Need to compare this with the "stripped" version currently in the tree.
This supplied version applies for Nokia builds, but need to repeat the
test for SF builds to see if pruning is needed, or if the file needs to
be device-specific.
// Copyright (c) 1999-2009 Nokia Corporation and/or its subsidiary(-ies).
// All rights reserved.
// This component and the accompanying materials are made available
// under the terms of "Eclipse Public License v1.0"
// which accompanies this distribution, and is available
// at the URL "http://www.eclipse.org/legal/epl-v10.html".
//
// Initial Contributors:
// Nokia Corporation - initial contribution.
//
// Contributors:
//
// Description:
// Definition of classes related event queues
//
//
#if !defined(__EVQUEUE_H__)
#define __EVQUEUE_H__
#include <e32std.h>
#include <e32base.h>
#include <w32std.h>
#include <graphics/wsgraphicdrawerinterface.h>
class CWsClient;
class CWsWindowRedraw;
class CWsGraphicDrawer;
enum TEventQueueWalkRet
{
EEventQueueWalkOk,
EEventQueueWalkDeleteEvent,
EEventQueueWalkRestart,
};
class TWsEvent;
typedef TEventQueueWalkRet (*EventQueueWalk)(TAny *aPtr, TWsEvent *aEvent);
enum TWservEventPriorities
{
EEventPriorityHigh,
EEventPriorityLow,
};
struct TRedraw
{
CWsWindowRedraw *iRedraw;
TUint iPriority;
};
class CEventBase : public CBase
{
private:
enum TEventSignalledState
{
EEventFlagSignalled=0x1,
EEventFlagCancelled=0x2
};
public:
CEventBase(CWsClient *aOwner);
~CEventBase();
void CancelRead();
void EventReadyCheck();
virtual void EventReady(const RMessagePtr2& aEventMsg);
void GetData(TAny *aData, TInt aLen);
protected:
void SignalEvent(TInt aCode = KErrNone);
inline TBool IsEventCancelled();
protected:
TInt iEventSignalledState;
CWsClient *iWsOwner;
RMessagePtr2 iEventMsg;
};
class CEventQueue : public CEventBase
{
private:
enum {EExtraQueueSize=16};
enum {EMaxQueueSize=32};
enum {EMinQueueSize=2};
enum {EQueueGranularity=4};
enum TCompressMode
{
ECompressNoPurge, // Compress only free space
ECompressPurge1, // Purge from only non-foreground queues
ECompressPurge2, // Purge from all queues
};
// Functions
public:
CEventQueue(CWsClient *aOwner);
~CEventQueue();
void ConstructL();
TBool QueueEvent(const TWsEvent &event);
TBool QueueEvent(const TWsEvent &event, TWservEventPriorities aPriority);
TBool QueueEvent(TUint32 aTarget, TInt aEvent);
TBool CheckRoom();
void GetData();
void UpdateLastEvent(const TWsEvent &event);
void RemoveEvent(TInt index);
void PurgePointerEvents();
const TWsEvent *PeekLastEvent();
void WalkEventQueue(EventQueueWalk aFunc, TAny *aFuncParam);
void MoveToFront();
static void Wait();
static void Signal();
static void InitStaticsL();
static void DeleteStaticsL();
//void LogUpDownEvents(TChar aChar);
public:// from CEventBase
void EventReady(const RMessagePtr2& aEventMsg);
private:
static void EventCopy(TWsEvent *aStart, TWsEvent *aEnd, TInt aNumEvents);
static TInt RequiredQueueSize(TInt aNumConnections);
void AdjustQueueSizeL(TInt aNewSize);
void IncreaseQueueSize(TInt aNumSpaces);
TInt FollowingGap() const;
void Purge();
TInt PurgeInactiveEvents(const TInt& aSizeRequired);
void Compress(TCompressMode aCompressMode);
void AddQueueL();
void RemoveQueue();
TBool Expand(TWservEventPriorities aPriority);
TBool doExpand(TCompressMode aCompressMode);
TInt SqueezeUp();
void SqueezeDown();
void MoveUp(TInt aMove);
void MoveDown(TInt aMove);
TBool MoveDownAndExpand(TDblQueIter<CEventQueue> &aIter, TInt aExpand);
#if defined(_DEBUG)
void CheckQueue();
void ZapEvent(TWsEvent *aTarget);
void ZapEvents(TWsEvent *aTarget, TInt aLen);
#endif
private:
void QueueActive();
TWsEvent *EventPtr(TInt index);
// Data
TInt iHead;
TInt iCount;
TInt iQueueSize;
TWsEvent *iEventPtr;
TDblQueLink iLink;
static RMutex iMutex;
static TWsEvent iNullEvent;
static TDblQue<CEventQueue> iQueueList;
static TWsEvent *iGlobalEventQueue;
static TInt iGlobalEventQueueSize;
static TInt iNumConnections;
};
class TWsRedrawEvent;
class CRedrawQueue : public CEventBase
{
// Functions
public:
CRedrawQueue(CWsClient *aOwner);
~CRedrawQueue();
void ConstructL();
TBool TriggerRedraw();
void ReCalcOrder();
void AddInvalid(CWsWindowRedraw *redrawWin);
void RemoveInvalid(CWsWindowRedraw *redrawWin);
void GetData();
TUint RedrawPriority(CWsWindowRedraw *aRedrawWin);
public:// from CEventBase
void EventReady(const RMessagePtr2& aEventMsg);
private:
void DeleteFromQueue(TInt aIndex);
void QueueActive();
TBool FindOutstandingRedrawEvent(CWsWindowRedraw& aRedraw, TWsRedrawEvent& aEvent);
TBool FindWindowNeedingRedrawEvent(TWsRedrawEvent& aEvent);
private:
// Data
CArrayFixSeg<TRedraw> *iRedraws; // List of windows and their areas that require redraws
TBool iAllocError;
TBool iRedrawTrigger;
TKeyArrayFix *iKeyPriority;
TKeyArrayFix *iKeyWindow;
static TWsRedrawEvent iNullRedrawEvent;
};
class CWsGraphicMessageQueue: public CEventBase
{
public:
class CMessage: public CWsMessageData
{
public:
static CMessage* New(const TDesC8& aData);
~CMessage();
public: // From CWsMessageData
TPtrC8 Data() const;
void Release();
private:
CMessage(const TDesC8& aData);
private:
TPtr8 iData;
};
public:
CWsGraphicMessageQueue(CWsClient *aOwner);
~CWsGraphicMessageQueue();
void GetGraphicMessage();
void AbortMessage(TInt aError);
void EventReady(const RMessagePtr2& aEventMsg);
void Queue(CWsMessageData* aMessage);
TInt TopClientHandle() const;
private:
CWsMessageData* iHead;
CWsMessageData* iTail;
CWsMessageData* Pop();
void GetDataWithHeader(TUint aHeader, const TDesC8& aData, TInt aDataLen);
};
#endif