OSDN Git Service

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