diff --git a/src/back/backlasses.cpp b/src/back/backlasses.cpp index 32c7940..ef827dd 100644 --- a/src/back/backlasses.cpp +++ b/src/back/backlasses.cpp @@ -56,15 +56,15 @@ HRESULT EndpointCallback::OnNotify(PAUDIO_VOLUME_NOTIFICATION_DATA pNotify) { log_debugcpp("Onnanokotify says Stored: " << guid->data1); log_debugcpp("Onnanokotify says Grace of God: " << eventData.guidEventContext.Data1); osh->updateMuteCallback(this->ep->getIndex(), eventData.bMuted); - osh->updateMainVolumeCallback(this->ep->getIndex(), eventData.fMasterVolume); + osh->updateVolumeCallback(this->ep->getIndex(), AudioChannel::CHANNEL_MAIN ,eventData.fMasterVolume); log_debugcpp("Onnanokotify says Reported Channel Qty: " << eventData.nChannels); if(multiChannel) for(UINT i = 0; i < eventData.nChannels; i++) { - osh->updateChannelVolumeCallback(this->ep->getIndex(), (uint32_t)i, extraChannelVol[i]); + osh->updateVolumeCallback(this->ep->getIndex(), (uint32_t)i, extraChannelVol[i]); } else - osh->updateChannelVolumeCallback(this->ep->getIndex(), (uint32_t)0, pNotify->afChannelVolumes[0]); + osh->updateVolumeCallback(this->ep->getIndex(), (uint32_t)0, pNotify->afChannelVolumes[0]); } return S_OK; diff --git a/src/cont/contclasses.cpp b/src/cont/contclasses.cpp index 3727fd4..679f921 100644 --- a/src/cont/contclasses.cpp +++ b/src/cont/contclasses.cpp @@ -6,8 +6,8 @@ Overseer OverseerHandler::os; EndpointHandler::EndpointHandler(uint64_t idx) { - std::vector endpoints = osh->getPlaybackEndpoints(); - this->ep = endpoints.at(idx); + //std::vector endpoints = osh->getPlaybackEndpoints().at(idx); + this->ep = osh->getPlaybackEndpoints().at(idx); epc = new EndpointCallback(ep); //epName = ep->getName(); ep->setCallback(epc); @@ -25,7 +25,6 @@ uint64_t EndpointHandler::getIndex(){ return idx; } - /* * -1 for master volume */ @@ -101,20 +100,6 @@ void OverseerHandler::setEndpointHandlers(std::vector ephs){ this->endpointHandlers = ephs; } - -void OverseerHandler::setEndpointWidgets(std::vector ews){ - this->endpointWidgets = ews; -} - -void OverseerHandler::updateMuteCallback(uint64_t idx, bool muted){ - updateFrontMuteCallback(idx, muted); -} - -void OverseerHandler::updateMainVolumeCallback(uint64_t idx, float newVal){ - log_debugcpp("mainvolcallback float: " << newVal); - updateFrontVolumeCallback(idx, AudioChannel::CHANNEL_MAIN, newVal); -} - void OverseerHandler::setFrontVolumeCallback(std::function f) { this->updateFrontVolumeCallback = f; } @@ -123,11 +108,27 @@ void OverseerHandler::setFrontMuteCallback(std::function f this->updateFrontMuteCallback = f; } -void OverseerHandler::updateChannelVolumeCallback(uint64_t idx, uint32_t channel, float newVal){ +void OverseerHandler::updateMuteCallback(uint64_t idx, bool muted){ + updateFrontMuteCallback(idx, muted); +} + +/* + * void OverseerHandler::updateMainVolumeCallback(uint64_t idx, float newVal){ + * + * } + */ + +void OverseerHandler::updateVolumeCallback(uint64_t idx, uint32_t channel, float newVal){ + if (channel == AudioChannel::CHANNEL_MAIN) { + log_debugcpp("mainvolcallback float: " << newVal); + updateFrontVolumeCallback(idx, AudioChannel::CHANNEL_MAIN, newVal); + return; + } + log_debugcpp("channel: " << channel << " volcallback float: " << newVal); // convert channel to bitmask - int i = 0; + uint32_t i = 0; while (i < channel) i++; uint32_t mask = (1 << i); diff --git a/src/cont/contclasses.h b/src/cont/contclasses.h index bb47131..320564f 100644 --- a/src/cont/contclasses.h +++ b/src/cont/contclasses.h @@ -64,7 +64,6 @@ class OverseerHandler { public: //OverseerHandler(); void setEndpointHandlers(std::vector ephs); - void setEndpointWidgets(std::vector ews); std::vector getEndpointHandlers(); std::vector getPlaybackEndpoints(); uint64_t getPlaybackEndpointsCount(); @@ -73,13 +72,13 @@ public: void updateMuteCallback(uint64_t idx, bool muted); void setFrontMuteCallback(std::function f); void setFrontVolumeCallback(std::function f); - void updateMainVolumeCallback(uint64_t idx, float newVal); - void updateChannelVolumeCallback(uint64_t idx, uint32_t channel, float newVal); + //void updateMainVolumeCallback(uint64_t idx, float newVal); + void updateVolumeCallback(uint64_t idx, uint32_t channel, float newVal); private: static Overseer os; std::vector endpointHandlers; - std::vector endpointWidgets; - std::function updateFrontVolumeCallback = {}; - std::function updateFrontMuteCallback = {}; + std::function updateFrontVolumeCallback; + std::function updateFrontMuteCallback; + }; diff --git a/src/debug.h b/src/debug.h index 78cb19c..e80893f 100644 --- a/src/debug.h +++ b/src/debug.h @@ -16,8 +16,14 @@ std::bitset varToBitset(T info) { #else #define log_debugcpp(str) -#define print_as_binary(len, info) +#define print_as_binary(len, type, info) #endif +/* Here as a quick reference, in case smthn similar is needed again */ +/* typedef void (EndpointWidget::*epwMuteFunc)(bool muted); */ +/* typedef void (EndpointWidget::*epwMainVolumeFunc)(float newValue); */ +/* typedef void (EndpointWidget::*epwChannelVolumeFunc)(uint32_t channel, float newValue); */ +/* typedef void (EndpointWidget::*epwToggleFrontFunc)(bool active); */ + diff --git a/src/qt/qtclasses.cpp b/src/qt/qtclasses.cpp index bebddf2..9a446ee 100644 --- a/src/qt/qtclasses.cpp +++ b/src/qt/qtclasses.cpp @@ -73,12 +73,14 @@ EndpointWidget::EndpointWidget(EndpointHandler* eph, QWidget *parent) : QWidget( void EndpointWidget::updateMute(bool muted){ log_debugcpp("cliqui callboqui cloqui"); - //TODO: Here to diagnose slider visuals locking when playing DJ with external volume bar. Functionality is restored when mute checkbox is clicked. - this->muteButton->blockSignals(true); + //TIP: Blocksignals here to diagnose slider visuals locking when playing DJ with external volume bar. Functionality is restored when mute checkbox is clicked. + //this->blockSignals(true); + //this->muteButton->blockSignals(true); //this->eph->setMute(osh->getGuid(), muted); this->muteButton->setChecked(muted); this->muteButton->setText(this->eph->getMute() ? STRING_UNMUTE : STRING_MUTE); - this->muteButton->blockSignals(false); + //this->muteButton->blockSignals(false); + //this->blockSignals(false); } void EndpointWidget::updateMute(int checked){ @@ -96,18 +98,20 @@ void EndpointWidget::updateMainVolume(int newValue){ } void EndpointWidget::updateMainVolume(float newValue){ + //this->blockSignals(true); int newVal = newValue * 100; log_debugcpp("mainvolcallback int: " << newVal); //this->mainSlider->blockSignals(true); - //TODO: Above + if(this->mainSlider->value() != newVal) { this->mainSlider->setValue(newVal); } //this->mainSlider->blockSignals(false); + //this->blockSignals(false); } void EndpointWidget::updateChannelVolume(uint32_t channel, float newValue){ - this->blockSignals(true); + //this->blockSignals(true); if (channel == (uint32_t)AudioChannel::CHANNEL_MAIN) updateMainVolume(newValue); @@ -116,25 +120,27 @@ void EndpointWidget::updateChannelVolume(uint32_t channel, float newValue){ for (size_t i = 0; i < sizeof(uint32_t) * 8 && i < channelSliders.size(); ++i) { if (((channel >> i) & 1) && this->channelSliders.at(i)->value() != newVal) { - this->channelSliders.at(i)->blockSignals(true); + //this->channelSliders.at(i)->blockSignals(true); this->channelSliders.at(i)->setValue(newVal); this->channelLabels.at(i)->setText(QString::number((int)(newValue * 100))); - this->channelSliders.at(i)->blockSignals(false); + //this->channelSliders.at(i)->blockSignals(false); } } - this->blockSignals(false); + //this->blockSignals(false); } -void EndpointWidget::toggleFrontEvents(bool active){ - this->muteButton->blockSignals(active); - this->mainSlider->blockSignals(active); - for(uint32_t i = 0; i < this->channelSliders.size(); i++){ - this->channelSliders.at(i)->blockSignals(active); - } -} +/* + * void EndpointWidget::toggleFrontEvents(bool active){ + * this->muteButton->blockSignals(active); + * this->mainSlider->blockSignals(active); + * for(uint32_t i = 0; i < this->channelSliders.size(); i++){ + * this->channelSliders.at(i)->blockSignals(active); + * } + * } + */ void EndpointWidget::setIndex(uint64_t idx){ @@ -168,7 +174,7 @@ void MainWindow::reloadEndpointWidgets() { ews.push_back(epw); layout->addWidget(epw, i, 0); } - osh->setEndpointWidgets(ews); + layout->addItem(new QSpacerItem(1, 1, QSizePolicy::Minimum, QSizePolicy::MinimumExpanding), i, 0); osh->setFrontVolumeCallback([this](uint64_t device, uint32_t channel, float value) { @@ -181,9 +187,6 @@ void MainWindow::reloadEndpointWidgets() { }); } - -//#include "qtclosemwh.h" - /* * void MainWindow::setPlotButton() { * button = new QPushButton("push"), diff --git a/src/qt/qtclasses.h b/src/qt/qtclasses.h index 788e279..4482d23 100644 --- a/src/qt/qtclasses.h +++ b/src/qt/qtclasses.h @@ -71,7 +71,7 @@ public: void updateMainVolume(float newValue); void updateChannelVolume(uint32_t channel, float newValue); void updateMute(bool muted); - void toggleFrontEvents(bool active); + //void toggleFrontEvents(bool active); //void populateEndpointWidget(EndpointHandler *eph); //void setEndpointHandlers(std::vector *ephs); @@ -84,18 +84,12 @@ private: uint64_t idx; //std::vector *ephs; //std::vector *sliders; - //signals: //void valueChanged(int value); }; -typedef void (EndpointWidget::*epwMuteFunc)(bool muted); -typedef void (EndpointWidget::*epwMainVolumeFunc)(float newValue); -typedef void (EndpointWidget::*epwChannelVolumeFunc)(uint32_t channel, float newValue); -typedef void (EndpointWidget::*epwToggleFrontFunc)(bool active); - class MainWindow : public QMainWindow { Q_OBJECT //QWidget *centralWidget;