// @(#)root/win32gdk:$Name: $:$Id: TGWin32ProxyBase.h,v 1.9 2005/04/21 18:46:24 brun Exp $ // Author: Valeriy Onuchin 08/08/2003 /************************************************************************* * Copyright (C) 1995-2000, Rene Brun and Fons Rademakers. * * All rights reserved. * * * * For the licensing terms see $ROOTSYS/LICENSE. * * For the list of contributors see $ROOTSYS/README/CREDITS. * *************************************************************************/ #ifndef ROOT_TGWin32ProxyBase #define ROOT_TGWin32ProxyBase #ifndef ROOT_Rtypes #include "Rtypes.h" #endif typedef void (*TGWin32CallBack)(void*); class TList; class TGWin32ProxyBasePrivate; //////////////////////////////////////////////////////////////////////////////// class TGWin32ProxyBase { friend class TGWin32; friend class TGWin32GL; protected: TGWin32ProxyBasePrivate *fPimpl; // very private data Int_t fBatchLimit; // batch limit TList *fListOfCallBacks; // list of callbacks (used for batch processing) TGWin32CallBack fCallBack; // callback function (executed by "main" thread) void *fParam; // arguments passed to/from callback function ULong_t fId; // thread id. There is one proxy per client thread static UInt_t fMaxResponseTime; // max period for waiting response from server thread static Long_t fgLock; // fgLock=1 - all client threads locked virtual Bool_t ForwardCallBack(Bool_t sync); virtual void SendExitMessage(); public: // private: static ULong_t fgPostMessageId; // post message ID static ULong_t fgPingMessageId; // ping message ID static ULong_t fgMainThreadId; // main thread ID static void Lock(); static void Unlock(); static void GlobalLock(); static void GlobalUnlock(); static Bool_t IsGloballyLocked() { return fgLock; } static Bool_t Ping(); public: TGWin32ProxyBase(); virtual ~TGWin32ProxyBase(); virtual void ExecuteCallBack(Bool_t sync); virtual Double_t GetMilliSeconds(); ULong_t GetId() const { return fId; } }; #endif