connect(hRunEmu, SIGNAL(sig_is_enable_mouse(bool)), glv, SLOT(do_set_mouse_enabled(bool)));
connect(glv, SIGNAL(sig_key_down(uint32_t, uint32_t, bool)), hRunEmu, SLOT(do_key_down(uint32_t, uint32_t, bool)));
connect(glv, SIGNAL(sig_key_up(uint32_t, uint32_t)), hRunEmu, SLOT(do_key_up(uint32_t, uint32_t)));
+ connect(this, SIGNAL(sig_quit_widgets()), glv, SLOT(do_stop_run_vm()));
+
//connect(hRunEmu, SIGNAL(sig_finished()), this, SLOT(delete_emu_thread()));
connect(this, SIGNAL(sig_vm_reset()), hRunEmu, SLOT(doReset()));
emit quit_draw_thread();
emit quit_joy_thread();
emit quit_emu_thread();
+ emit sig_quit_widgets();
+
if(hDrawEmu != NULL) {
hDrawEmu->wait();
delete hDrawEmu;
int sig_start_auto_key(QString);
int sig_stop_auto_key(void);
int quit_debugger_thread(void);
+ int sig_quit_widgets(void);
};
QT_END_NAMESPACE
draw_height = using_flags->get_screen_height();
delay_update = false;
is_mouse_enabled = false;
+
+ run_vm = true;
this->initKeyCode();
}
return QSize(draw_width, draw_height);
}
+void GLDrawClass::do_stop_run_vm()
+{
+ run_vm = false;
+}
bool delay_update;
protected:
+ bool run_vm;
+
void keyReleaseEvent(QKeyEvent *event);
void keyPressEvent(QKeyEvent *event);
void initializeGL();
void SaveToPixmap(void);
GLDraw_2_0 *extfunc;
CSP_KeyTables *key_table;
-
+
public:
GLDrawClass(QWidget *parent = 0);
~GLDrawClass();
void do_set_screen_multiply(float mul);
void do_update_keyboard_scan_code(uint32_t vk, uint32_t scan);
void do_set_mouse_enabled(bool flag);
+ void do_stop_run_vm();
signals:
void update_screenChanged(int tick);
void do_notify_move_mouse(int x, int y);
void GLDrawClass::update_screen(bitmap_t *p)
{
//if(tick < (1000 / 75)) tick = 1000 / 75;
- if(p != NULL) {
+ if((p != NULL) && (run_vm)) {
this->makeCurrent();
//imgptr = &(p->pImage);
drawUpdateTexture(p);