Implemented "started" and "stopped" signals
[rodin/chimara.git] / src / chimara-glk-private.h
1 #ifndef __CHIMARA_GLK_PRIVATE_H__
2 #define __CHIMARA_GLK_PRIVATE_H__
3
4 #include <glib.h>
5 #include <gmodule.h>
6 #include "glk.h"
7 #include "chimara-glk.h"
8
9 G_BEGIN_DECLS
10
11 typedef struct _ChimaraGlkPrivate ChimaraGlkPrivate;
12
13 struct _ChimaraGlkPrivate {
14     /* Pointer back to the widget itself for use in thread */
15     ChimaraGlk *self;
16     /* Whether user input is expected */
17     gboolean interactive;
18     /* Whether file operations are allowed */
19     gboolean protect;
20     /* Glk program loaded in widget */
21     GModule *program;
22     /* Thread in which Glk program is run */
23     GThread *thread;
24     /* Event queue and threading stuff */
25     GQueue *event_queue;
26     GMutex *event_lock;
27     GCond *event_queue_not_empty;
28     GCond *event_queue_not_full;
29     /* Abort mechanism */
30     GMutex *abort_lock;
31     gboolean abort_signalled;
32     /* User-defined interrupt handler */
33     void (*interrupt_handler)(void);
34     /* Global tree of all windows */
35     GNode *root_window;
36     /* List of filerefs currently in existence */
37     GList *fileref_list;
38     /* Current stream */
39     strid_t current_stream;
40     /* List of streams currently in existence */
41     GList *stream_list;
42 };
43
44 #define CHIMARA_GLK_PRIVATE(obj) \
45         (G_TYPE_INSTANCE_GET_PRIVATE((obj), CHIMARA_TYPE_GLK, ChimaraGlkPrivate))
46         
47 G_END_DECLS
48
49 #endif /* __CHIMARA_GLK_PRIVATE_H__ */