@@ -8,6 +8,7 @@ use gtk::{
88use libmpv2:: {
99 Format , Mpv , SetData ,
1010 events:: { Event , PropertyData } ,
11+ mpv_end_file_reason,
1112 render:: { OpenGLInitParams , RenderContext , RenderParam , RenderParamApiType } ,
1213} ;
1314use std:: { cell:: RefCell , env, os:: raw:: c_void, sync:: OnceLock } ;
@@ -97,7 +98,9 @@ impl ObjectImpl for Video {
9798 . param_types( [ str :: static_type( ) , Variant :: static_type( ) ] )
9899 . build( ) ,
99100 Signal :: builder( "playback-started" ) . build( ) ,
100- Signal :: builder( "playback-ended" ) . build( ) ,
101+ Signal :: builder( "playback-ended" )
102+ . param_types( [ str :: static_type( ) ] )
103+ . build( ) ,
101104 ]
102105 } )
103106 }
@@ -129,8 +132,17 @@ impl ObjectImpl for Video {
129132 Event :: StartFile => {
130133 object. emit_by_name:: <( ) >( "playback-started" , & [ ] ) ;
131134 }
132- Event :: EndFile ( _) => {
133- object. emit_by_name:: <( ) >( "playback-ended" , & [ ] ) ;
135+ Event :: EndFile ( reason) => {
136+ let reason = match reason {
137+ mpv_end_file_reason:: Eof => "eof" . to_string( ) ,
138+ mpv_end_file_reason:: Stop => "stop" . to_string( ) ,
139+ mpv_end_file_reason:: Redirect => "redirect" . to_string( ) ,
140+ mpv_end_file_reason:: Error => "error" . to_string( ) ,
141+ mpv_end_file_reason:: Quit => "quit" . to_string( ) ,
142+ _ => "other" . to_string( ) ,
143+ } ;
144+
145+ object. emit_by_name:: <( ) >( "playback-ended" , & [ & reason] ) ;
134146 }
135147 _ => { }
136148 } ) ;
0 commit comments