Common Source Code Project for Qt (a.k.a for FM-7).
リビジョン | 8b47bf99ea34681f1cfb963156160522294c0a9f (tree) |
---|---|
日時 | 2022-08-02 15:02:01 |
作者 | K.Ohta <whatisthis.sowhat@gmai...> |
コミッター | K.Ohta |
[Qt][DRAW][OSD] Make config pointer fixed.
@@ -34,8 +34,14 @@ DrawThreadClass::DrawThreadClass(OSD_BASE *o, std::shared_ptr<CSP_Logger> logger | ||
34 | 34 | glv = MainWindow->getGraphicsView(); |
35 | 35 | p_osd = o; |
36 | 36 | csp_logger = logger; |
37 | - using_flags = NULL; | |
38 | - if(p_osd != NULL) using_flags = p_osd->get_config_flags(); | |
37 | + p_config = nullptr; | |
38 | + using_flags.reset(); | |
39 | + if(p_osd != nullptr) { | |
40 | + using_flags = p_osd->get_config_flags(); | |
41 | + if(using_flags.get() != nullptr) { | |
42 | + p_config = using_flags->get_config_ptr(); | |
43 | + } | |
44 | + } | |
39 | 45 | screen = QGuiApplication::primaryScreen(); |
40 | 46 | |
41 | 47 | is_shared_glcontext = false; |
@@ -55,8 +61,8 @@ DrawThreadClass::DrawThreadClass(OSD_BASE *o, std::shared_ptr<CSP_Logger> logger | ||
55 | 61 | //connect(this, SIGNAL(sig_call_draw_screen()), p_osd, SLOT(draw_screen())); |
56 | 62 | //connect(this, SIGNAL(sig_call_no_draw_screen()), p_osd, SLOT(no_draw_screen())); |
57 | 63 | use_separate_thread_draw = true; |
58 | - if(using_flags->get_config_ptr() != NULL) { | |
59 | - use_separate_thread_draw = using_flags->get_config_ptr()->use_separate_thread_draw; | |
64 | + if(p_config != nullptr) { | |
65 | + use_separate_thread_draw = p_config->use_separate_thread_draw; | |
60 | 66 | } |
61 | 67 | rec_frame_width = 640; |
62 | 68 | rec_frame_height = 480; |
@@ -90,8 +96,11 @@ DrawThreadClass::~DrawThreadClass() | ||
90 | 96 | void DrawThreadClass::do_start_draw_thread(void) |
91 | 97 | { |
92 | 98 | bool _separate = false; |
93 | - if(using_flags->get_config_ptr() != NULL) { | |
94 | - if(using_flags->get_config_ptr()->use_separate_thread_draw) { | |
99 | + if(p_config == nullptr) { | |
100 | + p_config = using_flags->get_config_ptr(); | |
101 | + } | |
102 | + if(p_config != nullptr) { | |
103 | + if(p_config->use_separate_thread_draw) { | |
95 | 104 | _separate = true; |
96 | 105 | } |
97 | 106 | } |
@@ -116,7 +125,7 @@ void DrawThreadClass::do_set_frames_per_second(double fps) | ||
116 | 125 | void DrawThreadClass::doDrawMain(bool flag) |
117 | 126 | { |
118 | 127 | //req_map_screen_texture(); |
119 | -// if(p_osd == NULL) return; | |
128 | + if(p_osd == nullptr) return; | |
120 | 129 | p_osd->do_decode_movie(1); |
121 | 130 | if(flag) { |
122 | 131 | draw_frames = p_osd->draw_screen(); |
@@ -29,6 +29,7 @@ class DLL_PREFIX DrawThreadClass : public QThread { | ||
29 | 29 | Q_OBJECT |
30 | 30 | private: |
31 | 31 | OSD_BASE *p_osd; |
32 | + config_t *p_config; | |
32 | 33 | Ui_MainWindowBase *MainWindow; |
33 | 34 | GLDrawClass *glv; |
34 | 35 |
@@ -199,10 +199,10 @@ private: | ||
199 | 199 | |
200 | 200 | |
201 | 201 | protected: |
202 | - EmuThreadClass *parent_thread; | |
203 | - sdl_snddata_t snddata; | |
204 | - USING_FLAGS *using_flags; | |
205 | - config_t *p_config; | |
202 | + EmuThreadClass *parent_thread; | |
203 | + sdl_snddata_t snddata; | |
204 | + USING_FLAGS *using_flags; | |
205 | + config_t *p_config; | |
206 | 206 | std::shared_ptr<CSP_Logger> p_logger; |
207 | 207 | |
208 | 208 | QOpenGLContext *glContext; |