OSDN Git Service

[UI][Qt] Not liking config, using_flags directly.
[csp-qt/common_source_project-fm7.git] / source / src / qt / common / emu_thread.h
1 /*
2         Skelton for retropc emulator
3         Author : Takeda.Toshiya
4         Port to Qt : K.Ohta <whatisthis.sowhat _at_ gmail.com>
5         Date   : 2006.08.18 -
6         License : GPLv2
7         History : 2015.11.10 Split from qt_main.h
8         [ win32 main ] -> [ Qt main ] -> [Emu Thread]
9 */
10 #ifndef _CSP_QT_EMU_THREAD_H
11 #define _CSP_QT_EMU_THREAD_H
12
13 #include <QThread>
14 #include <QElapsedTimer>
15
16 #include "common.h"
17 #include "commonclasses.h"
18 #include "fileio.h"
19 #include "emu.h"
20 #include "vm.h"
21 #include "menuclasses.h"
22 #include "mainwidget.h"
23 #include "commonclasses.h"
24 #include "config.h"
25
26 class META_MainWindow;
27 class EMU;
28 class QString;
29 class QWaitCondition;
30 class USING_FLAGS;
31
32 #ifndef MAX_HISTORY
33 #define MAX_HISTORY 8
34 #endif
35
36 QT_BEGIN_NAMESPACE
37 #define MAX_COMMAND_LEN 64
38
39 class EmuThreadClass : public QThread {
40         Q_OBJECT
41 private:
42         bool calc_message;
43         bool tape_play_flag;
44         bool tape_rec_flag;
45         int tape_pos;
46         bool mouse_flag;
47         int mouse_x;
48         int mouse_y;
49         
50         char dbg_prev_command[MAX_COMMAND_LEN];
51
52         int get_interval(void);
53         bool key_repeat;
54         uint32_t key_down_code;
55         uint32_t key_up_code;
56         uint32_t key_mod_code;
57         bool key_changed;
58  protected:
59         EMU *p_emu;
60         USING_FLAGS *using_flags;
61         config_t *p_config;
62         
63         QWaitCondition *drawCond;
64         class META_MainWindow *MainWindow;
65         QElapsedTimer tick_timer;
66         
67         bool bRunThread;
68         bool bResetReq;
69         bool bSpecialResetReq;
70         bool bLoadStateReq;
71         bool bSaveStateReq;
72         bool bUpdateConfigReq;
73         bool bStartRecordSoundReq;
74         bool bStopRecordSoundReq;
75         bool bStartRecordMovieReq;
76
77         bool draw_timing;
78         bool doing_debug_command;
79         bool bUpdateVolumeReq[32];
80         int volume_balance[32];
81         int volume_avg[32];
82         int record_fps;
83
84         qint64 next_time;
85         qint64 update_fps_time;
86         bool prev_skip;
87         int total_frames;
88         int draw_frames;
89         int skip_frames;
90         QString qd_text[8];
91         QString fd_text[16];
92         QString cmt_text;
93         QString cdrom_text;
94         QString laserdisc_text;
95         QString bubble_text[16];
96         QString clipBoardText;
97         void sample_access_drv(void);
98         void calc_volume_from_balance(int num, int balance);
99         void calc_volume_from_level(int num, int level);
100 public:
101         EmuThreadClass(META_MainWindow *rootWindow, EMU *pp_emu, USING_FLAGS *p, QObject *parent = 0);
102         ~EmuThreadClass();
103         void SetEmu(EMU *p) {
104                 p_emu = p;
105         }
106         void set_tape_play(bool);
107         void run() { doWork("");}
108         EmuThreadClass *currentHandler();
109         void resize_screen(int sw, int sh, int stw, int sth);
110         bool now_debugging();
111 public slots:
112         void doWork(const QString &param);
113         void doExit(void);
114         void print_framerate(int frames);
115         void doReset();
116         void doSpecialReset();
117         void doLoadState();
118         void doSaveState();
119         void doUpdateConfig();
120         void doStartRecordSound();
121         void doStopRecordSound();
122         void doStartRecordVideo(int fps);
123         void doStopRecordVideo();
124
125         void doSetDisplaySize(int w, int h, int ww, int wh);
126         void doUpdateVolumeLevel(int num, int level);
127         void doUpdateVolumeBalance(int num, int level);
128
129         void moved_mouse(int, int);
130         void button_pressed_mouse(Qt::MouseButton);
131         void button_released_mouse(Qt::MouseButton);
132         void do_write_protect_disk(int drv, bool flag);
133         void do_close_disk(int);
134         void do_open_disk(int, QString, int);
135         void do_play_tape(QString name);
136         void do_rec_tape(QString name);
137         void do_close_tape(void);
138         void do_cmt_push_play(void);
139         void do_cmt_push_stop(void);
140         void do_cmt_push_fast_forward(void);
141         void do_cmt_push_fast_rewind(void);
142         void do_cmt_push_apss_forward(void);
143         void do_cmt_push_apss_rewind(void);
144         void do_write_protect_quickdisk(int drv, bool flag);
145         void do_close_quickdisk(int drv);
146         void do_open_quickdisk(int drv, QString path);
147         void do_close_cart(int drv);
148         void do_open_cart(int drv, QString path);
149         void do_close_laser_disk(void);
150         void do_open_laser_disk(QString path);
151         void do_eject_cdrom(void);
152         void do_open_cdrom(QString path);
153         void do_load_binary(int drv, QString path);
154         void do_save_binary(int drv, QString path);
155         void do_write_protect_bubble_casette(int drv, bool flag);
156         void do_close_bubble_casette(int);
157         void do_open_bubble_casette(int, QString, int);
158         void do_start_auto_key(QString text);
159         void do_stop_auto_key(void);
160         void do_draw_timing(bool);
161         void do_call_debugger_command(QString s);
162         void do_close_debugger(void);
163         void do_key_down(uint32_t vk, uint32_t mod, bool repeat);
164         void do_key_up(uint32_t vk, uint32_t mod);
165 signals:
166         int message_changed(QString);
167         int window_title_changed(QString);
168         int sig_draw_thread(bool);
169         int quit_draw_thread(void);
170         int sig_screen_aspect(int);
171         int sig_screen_size(int, int);
172         int sig_finished(void);
173         int call_emu_thread(EMU *);
174         int sig_check_grab_mouse(bool);
175         int sig_mouse_enable(bool);
176         int sig_update_recent_disk(int);
177         int sig_change_osd_fd(int, QString);
178         int sig_change_osd_qd(int, QString);
179         int sig_change_osd_cmt(QString);
180         int sig_change_osd_cdrom(QString);
181         int sig_change_osd_laserdisc(QString);
182         int sig_update_recent_bubble(int);
183         int sig_change_osd_bubble(int, QString);
184         int sig_set_grid_vertical(int, bool);
185         int sig_set_grid_horizonal(int, bool);
186         int sig_send_data_led(quint32);
187         int sig_resize_screen(int, int);
188         int sig_resize_uibar(int, int);
189         int sig_is_enable_mouse(bool);
190         int sig_debugger_input(QString);
191         int sig_quit_debugger();
192 };
193
194 QT_END_NAMESPACE
195
196 #endif