]> git.tdb.fi Git - gldbg.git/blob - source/grabber.h
Fix several problems reported by valgrind
[gldbg.git] / source / grabber.h
1 #ifndef GRABBERBASE_H_
2 #define GRABBERBASE_H_
3
4 #include <string>
5 #include "gldecoder.h"
6 #include "tool.h"
7
8 class Grabber: public RegisteredTool<Grabber>
9 {
10 private:
11         GlDbg &gldbg;
12         GlDecoder *decoder;
13         int viewport[4];
14         unsigned frame_num;
15         unsigned grab_num;
16         int pending_grab;
17         int autograb;
18
19         static unsigned short break_funcs[];
20
21 public:
22         Grabber(GlDbg &);
23         ~Grabber();
24 private:
25         void flavor_init();
26
27 public:
28         virtual void decode(const char *, unsigned);
29         virtual void process_started();
30         virtual void process_stopped(int);
31 private:
32         void cmd_grab(const std::string &);
33         void cmd_autograb(const std::string &);
34
35         void grab();
36         int write_png(const std::string &, unsigned, unsigned, void *);
37         void next_frame();
38
39         static void glViewport(void *, int, int, int, int);
40         static void glGetIntegerv(void *, GLenum, int *);
41         static void glReadPixels(void *, int, int, int, int, GLenum, GLenum, void *);
42         static void gldBreak(void *, unsigned short, unsigned char);
43 };
44
45 #endif