@@ -49,7 +49,7 @@ let buttonClick4 = 2; let buttonClick5 = 2; let buttonClick6 = 2;
4949let shortcutId1 ; let shortcutId2 ; let shortcutId3 ;
5050let shortcutId4 ; let shortcutId5 ; let shortcutId6 ;
5151
52- let checkIntervals = [ ] ;
52+ let checkIntervals = [ ] ; let commandTimeouts = [ ] ;
5353let isRunning = [ ] ;
5454let debug = false ;
5555
@@ -786,8 +786,15 @@ export default class CustomQuickToggleExtension extends Extension {
786786 return GLib . SOURCE_REMOVE ;
787787 } ) ;
788788
789+ commandTimeouts . push ( timeoutId ) ;
790+
789791 function cleanup ( ) {
792+ if ( didFinish ) return ;
790793 didFinish = true ;
794+
795+ try { GLib . source_remove ( timeoutId ) ; } catch ( _ ) { }
796+ commandTimeouts = commandTimeouts . filter ( id => id !== timeoutId ) ;
797+
791798 try { dataStream . close_async ( GLib . PRIORITY_DEFAULT , null , ( ) => { } ) ; } catch ( _ ) { }
792799 try { baseStream . close_async ( GLib . PRIORITY_DEFAULT , null , ( ) => { } ) ; } catch ( _ ) { }
793800 }
@@ -799,7 +806,6 @@ export default class CustomQuickToggleExtension extends Extension {
799806 try {
800807 const bytes = stream . read_bytes_finish ( res ) ;
801808 if ( bytes . get_size ( ) === 0 ) {
802- GLib . source_remove ( timeoutId ) ;
803809 const output = new TextDecoder ( ) . decode ( Uint8Array . from ( chunks . flat ( ) ) ) . trim ( ) ;
804810 const match = outputMatches ( output , checkRegex ) ;
805811
@@ -991,6 +997,12 @@ export default class CustomQuickToggleExtension extends Extension {
991997 }
992998 checkIntervals = [ ] ;
993999
1000+ for ( let id of commandTimeouts ) {
1001+ if ( id )
1002+ GLib . source_remove ( id ) ;
1003+ }
1004+ commandTimeouts = [ ] ;
1005+
9941006 this . _settings = null ;
9951007
9961008 console . log ( `[Custom Command Toggle] Extension disabled` ) ;
0 commit comments