mirror of
https://gitlab.freedesktop.org/dabrain34/GstPipelineStudio.git
synced 2024-12-18 14:06:30 +00:00
player: feed the app with gst logs
Get the debug callback to retrieve the gst logs and display it in the debug tab.
This commit is contained in:
parent
9c03de5d00
commit
8c6cda2e92
4 changed files with 49 additions and 4 deletions
|
@ -61,6 +61,28 @@ impl PlayerWeak {
|
|||
}
|
||||
}
|
||||
|
||||
fn gst_log_handler(
|
||||
category: gst::DebugCategory,
|
||||
level: gst::DebugLevel,
|
||||
file: &glib::GStr,
|
||||
function: &glib::GStr,
|
||||
line: u32,
|
||||
_obj: Option<&gst::LoggedObject>,
|
||||
message: &gst::DebugMessage,
|
||||
) {
|
||||
let log_message = format!(
|
||||
"{}\t{}\t{}:{}:{}\t{}",
|
||||
level,
|
||||
category.name(),
|
||||
line,
|
||||
file.as_str(),
|
||||
function.as_str(),
|
||||
message.get().unwrap().as_str()
|
||||
);
|
||||
|
||||
GPS_GST_LOG!("{}", log_message);
|
||||
}
|
||||
|
||||
#[derive(Debug)]
|
||||
pub struct PlayerInner {
|
||||
app: RefCell<Option<GPSApp>>,
|
||||
|
@ -79,7 +101,7 @@ impl Player {
|
|||
n_video_sink: Cell::new(0),
|
||||
bus_watch_guard: RefCell::new(None),
|
||||
}));
|
||||
|
||||
gst::debug_add_log_function(gst_log_handler);
|
||||
Ok(pipeline)
|
||||
}
|
||||
|
||||
|
@ -105,7 +127,7 @@ impl Player {
|
|||
} else {
|
||||
ElementInfo::element_update_rank("gtk4paintablesink", gst::Rank::Marginal);
|
||||
}
|
||||
|
||||
gst::debug_set_threshold_from_string(settings::Settings::gst_log_level().as_str(), true);
|
||||
// Create pipeline from the description
|
||||
let pipeline = gst::parse_launch(description)?;
|
||||
let pipeline = pipeline.downcast::<gst::Pipeline>();
|
||||
|
@ -282,7 +304,9 @@ impl Player {
|
|||
|
||||
fn on_pipeline_message(&self, msg: &gst::MessageRef) {
|
||||
use gst::MessageView;
|
||||
GPS_MSG!("{:?}", msg.structure());
|
||||
if let Some(message) = msg.structure() {
|
||||
GPS_MSG_LOG!("{:?}", message);
|
||||
}
|
||||
match msg.view() {
|
||||
MessageView::Eos(_) => {
|
||||
GPS_INFO!("EOS received");
|
||||
|
|
|
@ -92,7 +92,7 @@ macro_rules! GPS_DEBUG (
|
|||
);
|
||||
|
||||
#[macro_export]
|
||||
macro_rules! GPS_MSG (
|
||||
macro_rules! GPS_MSG_LOG (
|
||||
() => ($crate::print!("\n"));
|
||||
($($arg:tt)*) => ({
|
||||
logger::pring_msg_logger(logger::LogType::Message, format_args!($($arg)*).to_string());
|
||||
|
|
|
@ -70,6 +70,16 @@ impl Settings {
|
|||
path
|
||||
}
|
||||
|
||||
pub fn gst_log_level() -> String {
|
||||
let settings = Settings::load_settings();
|
||||
let binding = "0".to_string();
|
||||
let level = settings
|
||||
.preferences
|
||||
.get("gst_log_level")
|
||||
.unwrap_or(&binding);
|
||||
level.clone()
|
||||
}
|
||||
|
||||
pub fn set_recent_pipeline_description(pipeline: &str) {
|
||||
let mut settings = Settings::load_settings();
|
||||
settings.recent_pipeline = pipeline.to_string();
|
||||
|
|
|
@ -82,5 +82,16 @@ pub fn display_settings(app: &GPSApp) {
|
|||
dialog.close();
|
||||
});
|
||||
|
||||
let widget = gtk::Entry::new();
|
||||
widget.set_text(settings::Settings::gst_log_level().as_str());
|
||||
widget.connect_changed(glib::clone!(@weak widget => move |c| {
|
||||
let mut settings = settings::Settings::load_settings();
|
||||
settings.preferences.insert("gst_log_level".to_string(), c.text().to_string());
|
||||
settings::Settings::save_settings(&settings);
|
||||
}));
|
||||
let widget = widget
|
||||
.dynamic_cast::<gtk::Widget>()
|
||||
.expect("Should be a widget");
|
||||
add_settings_widget(&grid, "GST Log level", &widget, 2);
|
||||
dialog.show();
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue