OSDN Git Service

[UI][Qt] Update title of main window real time.
[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
25 class META_MainWindow;
26 class EMU;
27 class QString;
28 class QWaitCondition;
29
30 #ifndef MAX_HISTORY
31 #define MAX_HISTORY 8
32 #endif
33
34 QT_BEGIN_NAMESPACE
35 #define MAX_COMMAND_LEN 64
36
37 class EmuThreadClass : public QThread {
38         Q_OBJECT
39 private:
40         bool calc_message;
41         bool tape_play_flag;
42         bool tape_rec_flag;
43         int tape_pos;
44         bool mouse_flag;
45         int mouse_x;
46         int mouse_y;
47         
48         char dbg_prev_command[MAX_COMMAND_LEN];
49
50         int get_interval(void);
51         
52  protected:
53         EMU *p_emu;
54         QWaitCondition *drawCond;
55         class META_MainWindow *MainWindow;
56         QElapsedTimer tick_timer;
57         
58         bool bRunThread;
59         bool bResetReq;
60         bool bSpecialResetReq;
61         bool bLoadStateReq;
62         bool bSaveStateReq;
63         bool bUpdateConfigReq;
64         bool bStartRecordSoundReq;
65         bool bStopRecordSoundReq;
66         bool draw_timing;
67         bool doing_debug_command;
68 #if defined(USE_SOUND_VOLUME)
69         bool bUpdateVolumeReq[USE_SOUND_VOLUME];
70         int volume_balance[USE_SOUND_VOLUME];
71         int volume_avg[USE_SOUND_VOLUME];
72 #endif
73         
74         qint64 next_time;
75         qint64 update_fps_time;
76         bool prev_skip;
77         int total_frames;
78         int draw_frames;
79         int skip_frames;
80 #if defined(USE_QD1)
81         QString qd_text[8];
82 #endif
83 #if defined(USE_FD1)
84         QString fd_text[MAX_FD];
85 #endif
86 #if defined(USE_TAPE)
87         QString cmt_text;
88 #endif
89 #ifdef USE_AUTO_KEY
90         QString clipBoardText;
91 #endif
92         void sample_access_drv(void);
93         void calc_volume_from_balance(int num, int balance);
94         void calc_volume_from_level(int num, int level);
95 public:
96         EmuThreadClass(META_MainWindow *rootWindow, EMU *pp_emu, QObject *parent = 0);
97         ~EmuThreadClass();
98         void SetEmu(EMU *p) {
99                 p_emu = p;
100         }
101         void set_tape_play(bool);
102         void run() { doWork("");}
103         EmuThreadClass *currentHandler();
104         void resize_screen(int sw, int sh, int stw, int sth);
105         bool now_debugging();
106 public slots:
107         void doWork(const QString &param);
108         void doExit(void);
109         void print_framerate(int frames);
110         void doReset();
111         void doSpecialReset();
112         void doLoadState();
113         void doSaveState();
114         void doUpdateConfig();
115         void doStartRecordSound();
116         void doStopRecordSound();
117         void doSetDisplaySize(int w, int h, int ww, int wh);
118         void doUpdateVolumeLevel(int num, int level);
119         void doUpdateVolumeBalance(int num, int level);
120
121         void moved_mouse(int, int);
122         void button_pressed_mouse(Qt::MouseButton);
123         void button_released_mouse(Qt::MouseButton);
124 #if defined(USE_FD1) || defined(USE_FD2) || defined(USE_FD3) || defined(USE_FD4) || \
125     defined(USE_FD5) || defined(USE_FD6) || defined(USE_FD7) || defined(USE_FD8)
126         void do_write_protect_disk(int drv, bool flag);
127         void do_close_disk(int);
128         void do_open_disk(int, QString, int);
129 #endif
130 #ifdef USE_TAPE
131         void do_play_tape(QString name);
132         void do_rec_tape(QString name);
133         void do_close_tape(void);
134 # ifdef USE_TAPE_BUTTON
135         void do_cmt_push_play(void);
136         void do_cmt_push_stop(void);
137         void do_cmt_push_fast_forward(void);
138         void do_cmt_push_fast_rewind(void);
139         void do_cmt_push_apss_forward(void);
140         void do_cmt_push_apss_rewind(void);
141 # endif
142 #endif // USE_TAPE
143 #ifdef USE_QD1  
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 #endif
148 #ifdef USE_CART1
149         void do_close_cart(int drv);
150         void do_open_cart(int drv, QString path);
151 #endif
152 #ifdef USE_LASER_DISK
153         void do_close_laser_disk(void);
154         void do_open_laser_disk(QString path);
155 #endif
156 #ifdef USE_BINARY_FILE1
157         void do_load_binary(int drv, QString path);
158         void do_save_binary(int drv, QString path);
159 #endif
160         void do_start_auto_key(QString text);
161         void do_stop_auto_key(void);
162         void do_draw_timing(bool);
163         void do_call_debugger_command(QString s);
164         void do_close_debugger(void);
165         
166 signals:
167         int message_changed(QString);
168         int window_title_changed(QString);
169         int sig_draw_thread(bool);
170         int quit_draw_thread(void);
171         int sig_screen_aspect(int);
172         int sig_screen_size(int, int);
173         int sig_finished(void);
174         int call_emu_thread(EMU *);
175         int sig_check_grab_mouse(bool);
176         int sig_mouse_enable(bool);
177 #if defined(USE_FD1) || defined(USE_FD2) || defined(USE_FD3) || defined(USE_FD4) || \
178     defined(USE_FD5) || defined(USE_FD6) || defined(USE_FD7) || defined(USE_FD8)
179         int sig_update_recent_disk(int);
180         int sig_change_osd_fd(int, QString);
181 #endif
182 #if defined(USE_QD1) || defined(USE_QD2) || defined(USE_QD3) || defined(USE_QD4)
183         int sig_change_osd_qd(int, QString);
184 #endif
185 #if defined(USE_TAPE)
186         int sig_change_osd_cmt(QString);
187 #endif
188 #if defined(USE_DIG_RESOLUTION)
189         int sig_set_grid_vertical(int, bool);
190         int sig_set_grid_horizonal(int, bool);
191 #endif  
192 #ifdef USE_LED_DEVICE
193         int sig_send_data_led(quint32);
194 #endif
195
196         int sig_resize_screen(int, int);
197         int sig_resize_uibar(int, int);
198         int sig_debugger_input(QString);
199         int sig_quit_debugger();
200 };
201
202 QT_END_NAMESPACE
203
204 #endif