diff --git a/src/module/module_qt_window.cc b/src/module/module_qt_window.cc index 7b78f826f5ecfffb3899886d7ad520a1a9110a36..ae5d78901156249c8ad0e9b9d864d9512222ca60 100644 --- a/src/module/module_qt_window.cc +++ b/src/module/module_qt_window.cc @@ -189,7 +189,6 @@ module_qt_window_new(struct module_qt_window_s **win, struct queue *queue, lkt_d (void)mod_free; (void)mod_close; RETURN_UNLESS(win, "Invalid arguments", false); - struct poller_thread_arg *arg; if (*win == nullptr) { *win = LKT_ALLOC_STRUCT(module_qt_window_s); @@ -200,11 +199,8 @@ module_qt_window_new(struct module_qt_window_s **win, struct queue *queue, lkt_d (*win)->db = db; (*win)->reg = qt_window_reg; - arg = LKT_ALLOC_STRUCT(poller_thread_arg); - RETURN_UNLESS(arg, "Out of memory", false); - arg->args = *win; - RETURN_IF(poller_new(&(*win)->self, ___create_mpv_widget, arg), - "Failed to launch the SDL thread", false); + pthread_t thread; + RETURN_IF(pthread_create(&thread, nullptr, ___create_mpv_widget, *win), "Failed to launch the Qt thread", false); } return true; diff --git a/src/module/qt_window/mainwindow.cc b/src/module/qt_window/mainwindow.cc index 01b6a280300f350268b9f49799339ba778e86641..38eb490d825b9206721137e5acd1d9cd74d21044 100644 --- a/src/module/qt_window/mainwindow.cc +++ b/src/module/qt_window/mainwindow.cc @@ -1,6 +1,6 @@ #include "mainwindow.hh" -MainWindow::MainWindow(struct module_qt_window_s *qt_window, QWidget *parent) +MainWindow::MainWindow(module_qt_window_s *qt_window, QWidget *parent) : QMainWindow(parent) { qt_window->mpv_widget = new MpvWidget(qt_window->queue, qt_window->db, qt_window->reg, this); @@ -13,14 +13,13 @@ MainWindow::MainWindow(struct module_qt_window_s *qt_window, QWidget *parent) } void -MainWindow::closeMpv(bool *exited) noexcept +MainWindow::closeMpv() noexcept { - emit emitCloseMpv(exited); + emit emitCloseMpv(); } void -MainWindow::__closeMpv(bool *exited) +MainWindow::__closeMpv() { - delete centralWidget(); - *exited = true; + delete this; } diff --git a/src/module/qt_window/mainwindow.hh b/src/module/qt_window/mainwindow.hh index 6af91748641442cfbc7bbd491f175c4d7b0d931f..bec8b7b961f53a307201267513929832b8145c05 100644 --- a/src/module/qt_window/mainwindow.hh +++ b/src/module/qt_window/mainwindow.hh @@ -9,17 +9,17 @@ class MainWindow : public QMainWindow { Q_OBJECT public: - explicit MainWindow(struct module_qt_window_s *qt_window, QWidget *parent = nullptr); + explicit MainWindow(module_qt_window_s *qt_window, QWidget *parent = nullptr); public slots: inline void updateWindowTitle(QString str) noexcept { setWindowTitle(str); } signals: - void emitCloseMpv(bool *); + void emitCloseMpv(); private slots: - void __closeMpv(bool *); + void __closeMpv(); public: - void closeMpv(bool *) noexcept; + void closeMpv() noexcept; }; diff --git a/src/module/qt_window/mpvwidget_interface.cc b/src/module/qt_window/mpvwidget_interface.cc index aba2f6c1facc6ae9457bb15e831e87cacf248151..d687366847cd9b910f48d132f9eed9ec19ce0744 100644 --- a/src/module/qt_window/mpvwidget_interface.cc +++ b/src/module/qt_window/mpvwidget_interface.cc @@ -1,22 +1,25 @@ #include "mpvwidget_interface.hh" -#include "mainwindow.hh" #include <QApplication> +#include <QEventLoop> + +#include "mainwindow.hh" void * -___create_mpv_widget(struct poller_thread_arg *arg) +___create_mpv_widget(void *arg) { lkt_thread_set_name("lektord/qt-win"); /* Unsage reinterpret cast, but isok */ - struct module_qt_window_s *qt_window = reinterpret_cast<struct module_qt_window_s *>(arg->args); + module_qt_window_s *qt_window = reinterpret_cast<module_qt_window_s *>(arg); int argc = 0; - QApplication a(argc, nullptr); + QApplication app(argc, nullptr); setlocale(LC_NUMERIC, "C"); qt_window->main_window = new MainWindow(qt_window); qt_window->main_window->show(); - a.exec(); + app.exec(); + return nullptr; } @@ -65,8 +68,6 @@ ___module_qt_window_toggle_pause(struct module_qt_window_s *win) bool ___module_qt_window_close(struct module_qt_window_s *win) { - bool exited = false; - win->main_window->closeMpv(&exited); - delete win->main_window; + win->main_window->closeMpv(); return true; } diff --git a/src/module/qt_window/mpvwidget_interface.hh b/src/module/qt_window/mpvwidget_interface.hh index f79eca9af847f25a72c97392c3e9fa2c16371919..0f953e56bc1a05a627f410b00649c7395886ccf5 100644 --- a/src/module/qt_window/mpvwidget_interface.hh +++ b/src/module/qt_window/mpvwidget_interface.hh @@ -3,7 +3,7 @@ #include <lektor/common.h> #include "../module_qt_window.hh" -void *___create_mpv_widget(struct poller_thread_arg *arg); +void *___create_mpv_widget(void *arg); bool ___module_qt_window_get_elapsed(struct module_qt_window_s *, int *); bool ___module_qt_window_get_duration(struct module_qt_window_s *, int *);