12 #ifndef ROOT_TGLContext
13 #define ROOT_TGLContext
19 class TGLContextIdentity;
24 class TGLContextPrivate;
32 friend class TGLContextPrivate;
33 friend class TGLWidget;
37 TGLPaintDevice *fDevice;
38 std::unique_ptr<TGLContextPrivate> fPimpl;
43 TGLContextIdentity *fIdentity;
45 static Bool_t fgGlewInitDone;
48 TGLContext(TGLWidget *glWidget, Bool_t shareDefault=kTRUE,
const TGLContext *shareList=0);
51 TGLContextIdentity *GetIdentity()
const;
53 virtual ~TGLContext();
56 Bool_t ClearCurrent();
61 void SetContext(TGLWidget *widget,
const TGLContext *shareList);
65 Bool_t IsValid()
const {
return fValid; }
67 static TGLContext *GetCurrent();
68 static void GlewInit();
71 TGLContext(
const TGLContext &);
72 TGLContext &operator = (
const TGLContext &);
74 ClassDef(TGLContext, 0);
80 class TGLContextIdentity
84 TGLFontManager* fFontManager;
88 virtual ~TGLContextIdentity();
90 void AddRef(TGLContext* ctx);
91 void Release(TGLContext* ctx);
93 void AddClientRef() { ++fClientCnt; }
94 void ReleaseClient() { --fClientCnt; CheckDestroy(); }
96 Int_t GetRefCnt()
const {
return fCnt; }
97 Int_t GetClientRefCnt()
const {
return fClientCnt; }
99 Bool_t IsValid()
const {
return fCnt > 0; }
101 void RegisterDLNameRangeToWipe(UInt_t base, Int_t size);
102 void DeleteGLResources();
104 static TGLContextIdentity *GetCurrent();
106 static TGLContextIdentity *GetDefaultIdentity();
107 static TGLContext *GetDefaultContextAny();
109 TGLFontManager *GetFontManager();
117 typedef std::pair<UInt_t, Int_t> DLRange_t;
118 typedef std::list<DLRange_t> DLTrash_t;
119 typedef DLTrash_t::const_iterator DLTrashIt_t;
121 typedef std::list<TGLContext*> CtxList_t;
126 static TGLContextIdentity * fgDefaultIdentity;
128 ClassDef(TGLContextIdentity, 0);