From 6fe7becbea88362b2856c71ecb14bfa8c6ca2523 Mon Sep 17 00:00:00 2001 From: "K.Ohta" Date: Sun, 25 Mar 2018 21:46:49 +0900 Subject: [PATCH] [UI][Qt][SCREEN] Add turning on/off virtual media Icons on screen (OSD). --- source/src/config.cpp | 8 +++----- source/src/config.h | 1 + source/src/qt/gui/mainwidget_base.h | 2 ++ source/src/qt/gui/menu_screen.cpp | 13 +++++++++++++ source/src/qt/gui/qt_glutil_gl2_0.cpp | 9 +-------- source/src/qt/gui/qt_glutil_gl3_0.cpp | 2 +- 6 files changed, 21 insertions(+), 14 deletions(-) diff --git a/source/src/config.cpp b/source/src/config.cpp index 0d64322f6..eb4958a9e 100644 --- a/source/src/config.cpp +++ b/source/src/config.cpp @@ -153,12 +153,8 @@ void initialize_config() // qt #ifdef _USE_QT - #if defined(_WIN32) || defined(_WIN64) || defined(Q_OS_WIN) || defined(Q_OS_CYGWIN) - config.use_separate_thread_draw = false; - #else config.use_separate_thread_draw = true; - #endif - + config.use_osd_virtual_media = true; config.render_platform = CONFIG_RENDER_PLATFORM_OPENGL_MAIN; config.render_major_version = 2; // For crash with some devices. config.render_minor_version = 1; @@ -415,6 +411,7 @@ void load_config(const _TCHAR *config_path) // qt #ifdef _USE_QT config.use_separate_thread_draw = MyGetPrivateProfileBool(_T("Qt"), _T("UseSeparateThreadDraw"), config.use_separate_thread_draw, config_path); + config.use_osd_virtual_media = MyGetPrivateProfileBool(_T("Qt"), _T("UseOSDVirtualMedia"), config.use_osd_virtual_media, config_path); config.use_opengl_scanline = MyGetPrivateProfileBool(_T("Qt"), _T("UseOpenGLScanLine"), config.use_opengl_scanline, config_path); config.opengl_scanline_vert = MyGetPrivateProfileBool(_T("Qt"), _T("OpenGLScanLineVert"), config.opengl_scanline_vert, config_path);; config.opengl_scanline_horiz = MyGetPrivateProfileBool(_T("Qt"), _T("OpenGLScanLineHoriz"), config.opengl_scanline_horiz, config_path);; @@ -741,6 +738,7 @@ void save_config(const _TCHAR *config_path) #endif #ifdef _USE_QT MyWritePrivateProfileBool(_T("Qt"), _T("UseSeparateThreadDraw"), config.use_separate_thread_draw, config_path); + MyWritePrivateProfileBool(_T("Qt"), _T("UseOSDVirtualMedia"), config.use_osd_virtual_media, config_path); MyWritePrivateProfileBool(_T("Qt"), _T("UseOpenGLScanLine"), config.use_opengl_scanline, config_path); MyWritePrivateProfileBool(_T("Qt"), _T("OpenGLScanLineVert"), config.opengl_scanline_vert, config_path);; MyWritePrivateProfileBool(_T("Qt"), _T("OpenGLScanLineHoriz"), config.opengl_scanline_horiz, config_path);; diff --git a/source/src/config.h b/source/src/config.h index 7355f18c4..d72d7cbe1 100644 --- a/source/src/config.h +++ b/source/src/config.h @@ -209,6 +209,7 @@ typedef struct { #if defined(_USE_QT) bool use_separate_thread_draw; bool use_opengl_scanline; + bool use_osd_virtual_media; bool opengl_scanline_vert; bool opengl_scanline_horiz; bool use_opengl_filters; diff --git a/source/src/qt/gui/mainwidget_base.h b/source/src/qt/gui/mainwidget_base.h index 784816f3a..afec83c35 100644 --- a/source/src/qt/gui/mainwidget_base.h +++ b/source/src/qt/gui/mainwidget_base.h @@ -157,6 +157,7 @@ private: QActionGroup *actionGroup_Stretch; QActionGroup *actionGroup_SetRenderPlatform; class Action_Control *action_ScreenSeparateThread; + class Action_Control *action_ScreenUseOSD; class Action_Control *actionZoom; class Action_Control *actionDisplay_Mode; class Action_Control *actionScanLine; @@ -527,6 +528,7 @@ public slots: void do_stop_saving_movie(void); void do_start_saving_movie(void); void do_set_state_saving_movie(bool state); + void set_osd_virtual_media(bool f); virtual void OnOpenDebugger(int n); virtual void OnCloseDebugger(void); diff --git a/source/src/qt/gui/menu_screen.cpp b/source/src/qt/gui/menu_screen.cpp index 1b57b4930..02e484a17 100644 --- a/source/src/qt/gui/menu_screen.cpp +++ b/source/src/qt/gui/menu_screen.cpp @@ -123,6 +123,11 @@ void Ui_MainWindowBase::set_gl_scan_line_horiz(bool f) using_flags->get_config_ptr()->opengl_scanline_horiz = f; } +void Ui_MainWindowBase::set_osd_virtual_media(bool f) +{ + using_flags->get_config_ptr()->use_osd_virtual_media = f; +} + void Ui_MainWindowBase::ConfigScreenMenu_List(void) { int w, h; @@ -181,6 +186,10 @@ void Ui_MainWindowBase::ConfigScreenMenu(void) connect(actionScanLine, SIGNAL(toggled(bool)), this, SLOT(set_scan_line(bool))); } + + SET_ACTION_SINGLE(action_ScreenUseOSD, true, true, (using_flags->get_config_ptr()->use_osd_virtual_media)); + connect(action_ScreenUseOSD, SIGNAL(toggled(bool)),this, SLOT(set_osd_virtual_media(bool))); + if(!using_flags->is_use_one_board_computer() && (using_flags->get_max_button() <= 0)) { actionGLScanLineHoriz = new Action_Control(this, using_flags); actionGLScanLineHoriz->setObjectName(QString::fromUtf8("actionGLScanLineHoriz")); @@ -217,6 +226,7 @@ void Ui_MainWindowBase::ConfigScreenMenu(void) connect(actionRotate, SIGNAL(toggled(bool)), this, SLOT(set_screen_rotate(bool))); } + actionOpenGL_Filter = new Action_Control(this, using_flags); actionOpenGL_Filter->setObjectName(QString::fromUtf8("actionOpenGL_Filter")); actionOpenGL_Filter->setEnabled(true); @@ -326,6 +336,7 @@ void Ui_MainWindowBase::CreateScreenMenu(void) } menuScreen->addAction(action_ScreenSeparateThread); menuScreen->addSeparator(); + menuScreen->addAction(action_ScreenUseOSD); bool b_support_tv_render = using_flags->is_support_tv_render(); if(b_support_tv_render) { menuScreen_Render = new QMenu(menuScreen); @@ -392,6 +403,8 @@ void Ui_MainWindowBase::retranslateScreenMenu(void) action_ScreenSeparateThread->setText(QApplication::translate("MenuScreen", "Separate Draw (need restart)", 0)); action_ScreenSeparateThread->setToolTip(QApplication::translate("MenuScreen", "Do drawing(rendering) sequence to separate thread.\nIf you feels emulator is slowly at your host-machine, disable this.\nYou should restart this emulator when changed.", 0)); + action_ScreenUseOSD->setText(QApplication::translate("MenuScreen", "Display access Icons on screen.", 0)); + action_ScreenUseOSD->setToolTip(QApplication::translate("MenuScreen", "Use icons on screen to display accessing virtual media(s).", 0)); if(using_flags->is_use_scanline()) { actionScanLine->setText(QApplication::translate("MenuScreen", "Software Scan Line", 0)); diff --git a/source/src/qt/gui/qt_glutil_gl2_0.cpp b/source/src/qt/gui/qt_glutil_gl2_0.cpp index d03f9a332..592a4838a 100644 --- a/source/src/qt/gui/qt_glutil_gl2_0.cpp +++ b/source/src/qt/gui/qt_glutil_gl2_0.cpp @@ -1212,15 +1212,8 @@ void GLDraw_2_0::paintGL(void) if(!using_flags->is_use_one_board_computer() && (using_flags->get_max_button() <= 0)) { drawGrids(); } - //drawOsdLeds(); - drawOsdIcons(); + if(using_flags->get_config_ptr()->use_osd_virtual_media) drawOsdIcons(); extfunc_2->glFlush(); - //} else { - //drawOsdLeds(); - // drawOsdIcons(); - // extfunc_2->glFlush(); - //} - //p_wid->doneCurrent(); } void GLDraw_2_0::paintGL_OffScreen(int count, int w, int h) diff --git a/source/src/qt/gui/qt_glutil_gl3_0.cpp b/source/src/qt/gui/qt_glutil_gl3_0.cpp index 33826efa5..232f81fec 100644 --- a/source/src/qt/gui/qt_glutil_gl3_0.cpp +++ b/source/src/qt/gui/qt_glutil_gl3_0.cpp @@ -1206,7 +1206,7 @@ void GLDraw_3_0::paintGL(void) extfunc->glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); extfunc->glDisable(GL_DEPTH_TEST); //drawOsdLeds(); - drawOsdIcons(); + if(using_flags->get_config_ptr()->use_osd_virtual_media) drawOsdIcons(); extfunc->glDisable(GL_BLEND); if(!using_flags->is_use_one_board_computer() && (using_flags->get_max_button() <= 0)) { drawGrids(); -- 2.11.0