@@ -49,7 +49,7 @@ let buttonClick4 = 2; let buttonClick5 = 2; let buttonClick6 = 2;
49
49
let shortcutId1 ; let shortcutId2 ; let shortcutId3 ;
50
50
let shortcutId4 ; let shortcutId5 ; let shortcutId6 ;
51
51
52
- let checkIntervals = [ ] ;
52
+ let checkIntervals = [ ] ; let commandTimeouts = [ ] ;
53
53
let isRunning = [ ] ;
54
54
let debug = false ;
55
55
@@ -786,8 +786,15 @@ export default class CustomQuickToggleExtension extends Extension {
786
786
return GLib . SOURCE_REMOVE ;
787
787
} ) ;
788
788
789
+ commandTimeouts . push ( timeoutId ) ;
790
+
789
791
function cleanup ( ) {
792
+ if ( didFinish ) return ;
790
793
didFinish = true ;
794
+
795
+ try { GLib . source_remove ( timeoutId ) ; } catch ( _ ) { }
796
+ commandTimeouts = commandTimeouts . filter ( id => id !== timeoutId ) ;
797
+
791
798
try { dataStream . close_async ( GLib . PRIORITY_DEFAULT , null , ( ) => { } ) ; } catch ( _ ) { }
792
799
try { baseStream . close_async ( GLib . PRIORITY_DEFAULT , null , ( ) => { } ) ; } catch ( _ ) { }
793
800
}
@@ -799,7 +806,6 @@ export default class CustomQuickToggleExtension extends Extension {
799
806
try {
800
807
const bytes = stream . read_bytes_finish ( res ) ;
801
808
if ( bytes . get_size ( ) === 0 ) {
802
- GLib . source_remove ( timeoutId ) ;
803
809
const output = new TextDecoder ( ) . decode ( Uint8Array . from ( chunks . flat ( ) ) ) . trim ( ) ;
804
810
const match = outputMatches ( output , checkRegex ) ;
805
811
@@ -991,6 +997,12 @@ export default class CustomQuickToggleExtension extends Extension {
991
997
}
992
998
checkIntervals = [ ] ;
993
999
1000
+ for ( let id of commandTimeouts ) {
1001
+ if ( id )
1002
+ GLib . source_remove ( id ) ;
1003
+ }
1004
+ commandTimeouts = [ ] ;
1005
+
994
1006
this . _settings = null ;
995
1007
996
1008
console . log ( `[Custom Command Toggle] Extension disabled` ) ;
0 commit comments