From 0a301fb9bf815ab819737ec5d85f879109ee417c Mon Sep 17 00:00:00 2001 From: Hane Date: Thu, 16 Jan 2025 20:29:02 +0100 Subject: [PATCH] fixed new endpoints not appering if UI open + no roles / deque --- src/back/backlasses.cpp | 11 +++++++++-- src/global.h | 1 + src/qt/qtclasses.cpp | 11 +++++++---- src/qt/qtclasses.h | 3 ++- 4 files changed, 19 insertions(+), 7 deletions(-) diff --git a/src/back/backlasses.cpp b/src/back/backlasses.cpp index 7219279..8e1a152 100644 --- a/src/back/backlasses.cpp +++ b/src/back/backlasses.cpp @@ -204,9 +204,16 @@ HRESULT EndpointSituationCallback::OnDefaultDeviceChanged(EDataFlow flow, ERole } std::wstring wstringEndpointId = pwstrDeviceId; log_wdebugcpp(L"we got za defol 4 " + wstringEndpointId); + //APTTYPE aptType; + //APTTYPEQUALIFIER aptQualifier; + //CoGetApartmentType( + // &aptType, + // &aptQualifier + // ); + //std::thread roleChangeThread(&OverseerHandler::roleBucketEntryCallback, this, + // nRole, wstringEndpointId); + //roleChangeThread.detach(); osh->roleBucketEntryCallback(nRole, wstringEndpointId); - //osh->changeFrontDefaultsCallback(nRole, wstringEndpointId); - return S_OK; } diff --git a/src/global.h b/src/global.h index 88f2dae..8799892 100644 --- a/src/global.h +++ b/src/global.h @@ -12,6 +12,7 @@ #include #include #include +#include #include "debug.h" //#include "settings.h" diff --git a/src/qt/qtclasses.cpp b/src/qt/qtclasses.cpp index 667ce99..1712d3c 100644 --- a/src/qt/qtclasses.cpp +++ b/src/qt/qtclasses.cpp @@ -792,7 +792,9 @@ void MainWindow::removeEndpointWidget(CustomWidgetEvent* ev){ void MainWindow::addEndpointWidget(CustomWidgetEvent* ev){ EndpointWidget* epw = new EndpointWidget(ev->payload, containerWidget, this->ews.size()); //epw->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Fixed); - //this->widgetLayout->addWidget(epw); + epw->setParent(this); + if(this->widgetLayout) + this->widgetLayout->addWidget(epw); ews.push_back(epw); return; } @@ -984,7 +986,9 @@ HeaderWidget::HeaderWidget(QWidget *parent) : QWidget(parent) { void MainWindow::createLayout(QGridLayout *newLayout) { log_debugcpp("createLayout"); widgetLayout->removeItem(lastRowSpacer); - delete this->widgetLayout; + QGridLayout *tempStore = this->widgetLayout; + this->widgetLayout = 0; + delete tempStore; containerWidget->setLayout(newLayout); this->widgetLayout = newLayout; @@ -1191,9 +1195,8 @@ bool MainWindow::eventFilter(QObject *object, QEvent *event) { } void MainWindow::flushRoleChanges() { - //TODO: bucket list deque std::pair change = roleBucketList.front(); - roleBucketList.erase(roleBucketList.begin()); + roleBucketList.pop_front(); EndpointWidget *newDef = nullptr, *oldDef = nullptr; for (uint64_t i = 0; i < ews.size(); i++) { diff --git a/src/qt/qtclasses.h b/src/qt/qtclasses.h index 6d1ec61..73a6b2c 100644 --- a/src/qt/qtclasses.h +++ b/src/qt/qtclasses.h @@ -208,7 +208,8 @@ private: void changeFrontDefaults(Roles role, EndpointWidget* newDef, EndpointWidget* oldDef); std::vector ews; - std::vector> roleBucketList; + std::deque> roleBucketList; + std::mutex roleBucketMutex; QWidget *containerWidget; QGridLayout *widgetLayout;