From 44cbddc944e9fc0e652561c3e4cc44fa73f010f1 Mon Sep 17 00:00:00 2001 From: jsiegle <jsiegle@mit.edu> Date: Wed, 23 May 2012 14:38:30 -0400 Subject: [PATCH] Reduced ControlPanel CPU usage --- Source/Audio/AudioComponent.cpp | 4 +-- Source/Processors/ProcessorGraph.cpp | 10 +++--- Source/UI/ControlPanel.cpp | 50 ++++++++++++++++++---------- Source/UI/ControlPanel.h | 5 +-- Source/UI/UIComponent.cpp | 10 ++++-- 5 files changed, 50 insertions(+), 29 deletions(-) diff --git a/Source/Audio/AudioComponent.cpp b/Source/Audio/AudioComponent.cpp index 0d968d761..9942ff147 100644 --- a/Source/Audio/AudioComponent.cpp +++ b/Source/Audio/AudioComponent.cpp @@ -104,14 +104,14 @@ bool AudioComponent::callbacksAreActive() { void AudioComponent::restartDevice() { - //deviceManager.restartLastAudioDevice(); + deviceManager.restartLastAudioDevice(); } void AudioComponent::stopDevice() { - //deviceManager.closeAudioDevice(); + deviceManager.closeAudioDevice(); } void AudioComponent::beginCallbacks() { diff --git a/Source/Processors/ProcessorGraph.cpp b/Source/Processors/ProcessorGraph.cpp index 98eebd232..f2c20aff0 100644 --- a/Source/Processors/ProcessorGraph.cpp +++ b/Source/Processors/ProcessorGraph.cpp @@ -398,7 +398,7 @@ GenericProcessor* ProcessorGraph::createProcessorFromDescription(String& descrip } - sendActionMessage("New source node created."); + //sendActionMessage("New source node created."); } else if (processorType.equalsIgnoreCase("Filters")) { @@ -417,7 +417,7 @@ GenericProcessor* ProcessorGraph::createProcessorFromDescription(String& descrip processor = new SpikeDetector(); } - sendActionMessage("New filter node created."); + //sendActionMessage("New filter node created."); } else if (processorType.equalsIgnoreCase("Utilities")) { @@ -426,14 +426,14 @@ GenericProcessor* ProcessorGraph::createProcessorFromDescription(String& descrip std::cout << "Creating a new splitter." << std::endl; processor = new Splitter(); - sendActionMessage("New splitter created."); + //sendActionMessage("New splitter created."); } else if (subProcessorType.equalsIgnoreCase("Merger")) { std::cout << "Creating a new merger." << std::endl; processor = new Merger(); - sendActionMessage("New merger created."); + //sendActionMessage("New merger created."); } @@ -456,7 +456,7 @@ GenericProcessor* ProcessorGraph::createProcessorFromDescription(String& descrip processor = new WiFiOutput(); } - sendActionMessage("New sink created."); + //sendActionMessage("New sink created."); } return processor; diff --git a/Source/UI/ControlPanel.cpp b/Source/UI/ControlPanel.cpp index 70849e956..c9be9f083 100644 --- a/Source/UI/ControlPanel.cpp +++ b/Source/UI/ControlPanel.cpp @@ -429,9 +429,10 @@ ControlPanel::ControlPanel(ProcessorGraph* graph_, AudioComponent* audio_) : ""); addChildComponent(filenameComponent); - startTimer(100); - - + //diskMeter->updateDiskSpace(graph->getRecordNode()->getFreeSpace()); + //diskMeter->repaint(); + refreshMeters(); + startTimer(5000); // update disk space every 10 seconds setWantsKeyboardFocus(true); @@ -557,10 +558,12 @@ void ControlPanel::buttonClicked(Button* button) std::cout << "Record button pressed." << std::endl; if (recordButton->getToggleState()) { + playButton->setToggleState(true,false); graph->getRecordNode()->setParameter(1,10.0f); masterClock->startRecording(); // turn on recording + } else { graph->getRecordNode()->setParameter(0,10.0f); // turn off recording masterClock->stopRecording(); @@ -598,6 +601,8 @@ void ControlPanel::buttonClicked(Button* button) if (recordButton->getToggleState()) graph->getRecordNode()->setParameter(1,10.0f); + stopTimer(); + startTimer(250); // refresh every 250 ms audio->beginCallbacks(); masterClock->start(); } @@ -609,8 +614,10 @@ void ControlPanel::buttonClicked(Button* button) if (audio->callbacksAreActive()) { audio->endCallbacks(); graph->disableProcessors(); - cpuMeter->updateCPU(0.0f); + refreshMeters(); masterClock->stop(); + stopTimer(); + startTimer(10000); // back to refresh every 10 seconds } @@ -630,7 +637,9 @@ void ControlPanel::disableCallbacks() std::cout << "Disabling processors." << std::endl; graph->disableProcessors(); std::cout << "Updating control panel." << std::endl; - cpuMeter->updateCPU(0.0f); + refreshMeters(); + stopTimer(); + startTimer(10000); // back to refresh every 10 seconds } @@ -642,26 +651,35 @@ void ControlPanel::disableCallbacks() } -void ControlPanel::actionListenerCallback(const String & msg) -{ - //std::cout << "Message Received." << std::endl; - if (playButton->getToggleState()) { - cpuMeter->updateCPU(audio->deviceManager.getCpuUsage()); - } +// void ControlPanel::actionListenerCallback(const String & msg) +// { +// //std::cout << "Message Received." << std::endl; +// if (playButton->getToggleState()) { +// cpuMeter->updateCPU(audio->deviceManager.getCpuUsage()); +// } - cpuMeter->repaint(); +// cpuMeter->repaint(); - diskMeter->updateDiskSpace(graph->getRecordNode()->getFreeSpace()); - diskMeter->repaint(); +// diskMeter->updateDiskSpace(graph->getRecordNode()->getFreeSpace()); +// diskMeter->repaint(); -} +// } void ControlPanel::timerCallback() { //std::cout << "Message Received." << std::endl; + + refreshMeters(); + +} + +void ControlPanel::refreshMeters() +{ if (playButton->getToggleState()) { cpuMeter->updateCPU(audio->deviceManager.getCpuUsage()); + } else { + cpuMeter->updateCPU(0.0f); } cpuMeter->repaint(); @@ -670,8 +688,6 @@ void ControlPanel::timerCallback() diskMeter->updateDiskSpace(graph->getRecordNode()->getFreeSpace()); diskMeter->repaint(); - - } bool ControlPanel::keyPressed(const KeyPress& key) diff --git a/Source/UI/ControlPanel.h b/Source/UI/ControlPanel.h index 394a0ce66..04235a79b 100644 --- a/Source/UI/ControlPanel.h +++ b/Source/UI/ControlPanel.h @@ -209,7 +209,7 @@ class UtilityButton; class ControlPanel : public Component, public Button::Listener, - public ActionListener, + // public ActionListener, public Timer, public AccessClass @@ -247,11 +247,12 @@ private: void resized(); void buttonClicked(Button* button); - void actionListenerCallback(const String& msg); + //void actionListenerCallback(const String& msg); void updateChildComponents(); void timerCallback(); + void refreshMeters(); bool keyPressed(const KeyPress &key); diff --git a/Source/UI/UIComponent.cpp b/Source/UI/UIComponent.cpp index b82b9fb45..ddedc347c 100644 --- a/Source/UI/UIComponent.cpp +++ b/Source/UI/UIComponent.cpp @@ -228,9 +228,13 @@ const PopupMenu UIComponent::getMenuForIndex(int menuIndex, const String& menuNa { menu.addCommandItem (commandManager, openConfiguration); menu.addCommandItem (commandManager, saveConfiguration); - menu.addSeparator(); - menu.addCommandItem (commandManager, StandardApplicationCommandIDs::quit); - } else if (menuIndex == 1) + +#if !JUCE_MAC + menu.addSeparator(); + menu.addCommandItem (commandManager, StandardApplicationCommandIDs::quit); +#endif + + } else if (menuIndex == 1) { menu.addCommandItem (commandManager, undo); menu.addCommandItem (commandManager, redo); -- GitLab