mirror of
https://github.com/Xetibo/ReSet.git
synced 2025-07-01 15:57:46 +02:00
fix: Use buffer for all audio sliders
This commit is contained in:
parent
5a0e5d86bb
commit
03fc3790c0
19 changed files with 145 additions and 59 deletions
|
@ -1,4 +1,3 @@
|
|||
use std::cell::RefCell;
|
||||
use std::sync::Arc;
|
||||
use std::time::{Duration, SystemTime};
|
||||
|
||||
|
@ -9,8 +8,7 @@ use dbus::blocking::Connection;
|
|||
use dbus::Error;
|
||||
use glib::subclass::types::ObjectSubclassIsExt;
|
||||
use glib::{clone, Cast, Propagation};
|
||||
use gtk::prelude::ScaleExt;
|
||||
use gtk::{gio, PositionType, StringObject};
|
||||
use gtk::{gio, StringObject};
|
||||
use ReSet_Lib::audio::audio::InputStream;
|
||||
|
||||
use super::inputStreamEntryImpl;
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
use std::sync::atomic::Ordering;
|
||||
use std::sync::Arc;
|
||||
use std::time::Duration;
|
||||
use std::time::{Duration, SystemTime};
|
||||
|
||||
use crate::components::base::listEntry::ListEntry;
|
||||
use crate::components::base::utils::{
|
||||
|
@ -159,6 +159,15 @@ pub fn populate_sinks(output_box: Arc<SinkBox>) {
|
|||
let sink = imp.resetDefaultSink.borrow();
|
||||
let index = sink.index;
|
||||
let channels = sink.channels;
|
||||
{
|
||||
let mut time = imp.volumeTimeStamp.borrow_mut();
|
||||
if time.is_some()
|
||||
&& time.unwrap().elapsed().unwrap() < Duration::from_millis(50)
|
||||
{
|
||||
return Propagation::Proceed;
|
||||
}
|
||||
*time = Some(SystemTime::now());
|
||||
}
|
||||
set_sink_volume(value, index, channels);
|
||||
Propagation::Proceed
|
||||
});
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
use std::cell::RefCell;
|
||||
use std::collections::HashMap;
|
||||
use std::sync::{Arc, RwLock};
|
||||
use std::time::SystemTime;
|
||||
|
||||
use crate::components::base::listEntry::ListEntry;
|
||||
use crate::components::output::inputStreamEntry::InputStreamEntry;
|
||||
|
@ -46,6 +47,7 @@ pub struct SinkBox {
|
|||
// the full name
|
||||
pub resetSinkMap: Arc<RwLock<HashMap<String, (u32, u32, String)>>>,
|
||||
// pub : Arc<Mutex<Vec<ListEntry>>>,
|
||||
pub volumeTimeStamp: RefCell<Option<SystemTime>>,
|
||||
}
|
||||
|
||||
#[glib::object_subclass]
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
use std::sync::Arc;
|
||||
use std::time::Duration;
|
||||
use std::time::{Duration, SystemTime};
|
||||
|
||||
use adw::glib;
|
||||
use adw::glib::Object;
|
||||
|
@ -42,6 +42,13 @@ impl SinkEntry {
|
|||
let sink = imp.stream.borrow();
|
||||
let index = sink.index;
|
||||
let channels = sink.channels;
|
||||
{
|
||||
let mut time = imp.volumeTimeStamp.borrow_mut();
|
||||
if time.is_some() && time.unwrap().elapsed().unwrap() < Duration::from_millis(50) {
|
||||
return Propagation::Proceed;
|
||||
}
|
||||
*time = Some(SystemTime::now());
|
||||
}
|
||||
set_sink_volume(value, index, channels);
|
||||
Propagation::Proceed
|
||||
}),
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
use std::cell::RefCell;
|
||||
use std::sync::Arc;
|
||||
use std::time::SystemTime;
|
||||
|
||||
use crate::components::output::sinkEntry;
|
||||
use gtk::subclass::prelude::*;
|
||||
|
@ -23,6 +24,7 @@ pub struct SinkEntry {
|
|||
#[template_child]
|
||||
pub resetVolumeMeter: TemplateChild<ProgressBar>,
|
||||
pub stream: Arc<RefCell<Sink>>,
|
||||
pub volumeTimeStamp: RefCell<Option<SystemTime>>,
|
||||
}
|
||||
|
||||
#[glib::object_subclass]
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue