namespace glretrace {
-extern bool double_buffer;
+extern bool insideList;
extern bool insideGlBeginEnd;
-extern glws::Profile defaultProfile;
-extern glws::Visual *visual[glws::PROFILE_MAX];
-extern glws::Drawable *drawable;
-extern glws::Context *context;
-extern unsigned frame;
-extern long long startTime;
-extern bool wait;
-extern bool benchmark;
+extern glws::Drawable *currentDrawable;
+extern glws::Context *currentContext;
+
+glws::Drawable *
+createDrawable(glws::Profile profile);
+
+glws::Drawable *
+createDrawable(void);
+
+glws::Context *
+createContext(glws::Context *shareContext, glws::Profile profile);
+
+glws::Context *
+createContext(glws::Context *shareContext = 0);
+
+bool
+makeCurrent(trace::Call &call, glws::Drawable *drawable, glws::Context *context);
-extern unsigned dump_state;
void
checkGlError(trace::Call &call);
extern const retrace::Entry wgl_callbacks[];
extern const retrace::Entry egl_callbacks[];
+void frame_start();
void frame_complete(trace::Call &call);
void updateDrawable(int width, int height);
+void completeQueries();
+void beginProfileGPU(trace::Call &call);
+void endProfileGPU(trace::Call &call);
+
} /* namespace glretrace */