OSDN Git Service

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