1
- let unlockedDrawInterval = [ ] ;
2
- let lockedDrawInterval = [ ] ;
3
- let showWidgets = false ;
4
- let firstDraw = true ;
1
+ let s = { } ;
2
+ // unlocked draw intervals
3
+ s . udi = [ ] ;
4
+ // locked draw intervals
5
+ s . ldi = [ ] ;
6
+ // full draw
7
+ s . fd = true ;
8
+ // performance log
9
+ s . pl = { } ;
5
10
6
11
{
7
12
let x = g . getWidth ( ) / 2 ;
@@ -21,12 +26,10 @@ let firstDraw = true;
21
26
let precompiledJs = eval ( require ( "Storage" ) . read ( "imageclock.draw.js" ) ) ;
22
27
let settings = require ( 'Storage' ) . readJSON ( "imageclock.json" , true ) || { } ;
23
28
24
- let performanceLog = { } ;
25
-
26
29
let startPerfLog = ( ) => { } ;
27
30
let endPerfLog = ( ) => { } ;
28
31
Bangle . printPerfLog = ( ) => { print ( "Deactivated" ) ; } ;
29
- Bangle . resetPerfLog = ( ) => { performanceLog = { } ; } ;
32
+ Bangle . resetPerfLog = ( ) => { s . pl = { } ; } ;
30
33
31
34
let colormap = {
32
35
"#000" :0 ,
@@ -64,35 +67,37 @@ let firstDraw = true;
64
67
if ( settings . perflog ) {
65
68
startPerfLog = function ( name ) {
66
69
let time = getTime ( ) ;
67
- if ( ! performanceLog . start ) performanceLog . start = { } ;
68
- performanceLog . start [ name ] = time ;
70
+ if ( ! s . pl . start ) s . pl . start = { } ;
71
+ s . pl . start [ name ] = time ;
69
72
} ;
70
- endPerfLog = function ( name ) {
73
+ endPerfLog = function ( name , once ) {
71
74
let time = getTime ( ) ;
72
- if ( ! performanceLog . last ) performanceLog . last = { } ;
73
- let duration = time - performanceLog . start [ name ] ;
74
- performanceLog . last [ name ] = duration ;
75
- if ( ! performanceLog . cum ) performanceLog . cum = { } ;
76
- if ( ! performanceLog . cum [ name ] ) performanceLog . cum [ name ] = 0 ;
77
- performanceLog . cum [ name ] += duration ;
78
- if ( ! performanceLog . count ) performanceLog . count = { } ;
79
- if ( ! performanceLog . count [ name ] ) performanceLog . count [ name ] = 0 ;
80
- performanceLog . count [ name ] ++ ;
75
+ if ( ! s . pl . start [ name ] ) return ;
76
+ if ( ! s . pl . last ) s . pl . last = { } ;
77
+ let duration = time - s . pl . start [ name ] ;
78
+ s . pl . last [ name ] = duration ;
79
+ if ( ! s . pl . cum ) s . pl . cum = { } ;
80
+ if ( ! s . pl . cum [ name ] ) s . pl . cum [ name ] = 0 ;
81
+ s . pl . cum [ name ] += duration ;
82
+ if ( ! s . pl . count ) s . pl . count = { } ;
83
+ if ( ! s . pl . count [ name ] ) s . pl . count [ name ] = 0 ;
84
+ s . pl . count [ name ] ++ ;
85
+ if ( once ) { s . pl . start [ name ] = undefined }
81
86
} ;
82
87
83
88
Bangle . printPerfLog = function ( ) {
84
89
let result = "" ;
85
90
let keys = [ ] ;
86
- for ( let c in performanceLog . cum ) {
91
+ for ( let c in s . pl . cum ) {
87
92
keys . push ( c ) ;
88
93
}
89
94
keys . sort ( ) ;
90
95
for ( let k of keys ) {
91
- print ( k , "last:" , ( performanceLog . last [ k ] * 1000 ) . toFixed ( 0 ) , "average:" , ( performanceLog . cum [ k ] / performanceLog . count [ k ] * 1000 ) . toFixed ( 0 ) , "count:" , performanceLog . count [ k ] , "total:" , ( performanceLog . cum [ k ] * 1000 ) . toFixed ( 0 ) ) ;
96
+ print ( k , "last:" , ( s . pl . last [ k ] * 1000 ) . toFixed ( 0 ) , "average:" , ( s . pl . cum [ k ] / s . pl . count [ k ] * 1000 ) . toFixed ( 0 ) , "count:" , s . pl . count [ k ] , "total:" , ( s . pl . cum [ k ] * 1000 ) . toFixed ( 0 ) ) ;
92
97
}
93
98
} ;
94
99
}
95
-
100
+ startPerfLog ( "fullDraw" ) ;
96
101
startPerfLog ( "loadFunctions" ) ;
97
102
98
103
let delayTimeouts = { } ;
@@ -609,15 +614,22 @@ let firstDraw = true;
609
614
610
615
promise . then ( ( ) => {
611
616
let currentDrawingTime = Date . now ( ) ;
612
- if ( showWidgets ) {
613
- restoreWidgetDraw ( ) ;
614
- }
615
617
lastDrawTime = Date . now ( ) - start ;
616
618
isDrawing = false ;
617
- firstDraw = false ;
619
+ s . fd = false ;
618
620
requestRefresh = false ;
619
621
endPerfLog ( "initialDraw" ) ;
620
- if ( ! Bangle . uiRemove ) setUi ( ) ;
622
+ endPerfLog ( "fullDraw" , true ) ;
623
+
624
+ if ( ! Bangle . uiRemove ) {
625
+ setUi ( ) ;
626
+ let orig = Bangle . drawWidgets ;
627
+ Bangle . drawWidgets = ( ) => { } ;
628
+ Bangle . loadWidgets ( ) ;
629
+ Bangle . drawWidgets = orig ;
630
+ require ( "widget_utils" ) . swipeOn ( ) ;
631
+ Bangle . drawWidgets ( ) ;
632
+ }
621
633
} ) . catch ( ( e ) => {
622
634
print ( "Error during drawing" , e ) ;
623
635
} ) ;
@@ -701,16 +713,16 @@ let firstDraw = true;
701
713
702
714
let handleLock = function ( isLocked , forceRedraw ) {
703
715
//print("isLocked", Bangle.isLocked());
704
- for ( let i of unlockedDrawInterval ) {
716
+ for ( let i of s . udi ) {
705
717
//print("Clearing unlocked", i);
706
718
clearInterval ( i ) ;
707
719
}
708
- for ( let i of lockedDrawInterval ) {
720
+ for ( let i of s . ldi ) {
709
721
//print("Clearing locked", i);
710
722
clearInterval ( i ) ;
711
723
}
712
- unlockedDrawInterval = [ ] ;
713
- lockedDrawInterval = [ ] ;
724
+ s . udi = [ ] ;
725
+ s . ldi = [ ] ;
714
726
715
727
if ( ! isLocked ) {
716
728
if ( forceRedraw || ! redrawEvents || ( redrawEvents . includes ( "unlock" ) ) ) {
@@ -726,7 +738,7 @@ let firstDraw = true;
726
738
initialDraw ( watchfaceResources , watchface ) ;
727
739
} , unlockedRedraw , ( v ) => {
728
740
//print("New matched unlocked interval", v);
729
- unlockedDrawInterval . push ( v ) ;
741
+ s . udi . push ( v ) ;
730
742
} , lastDrawTime ) ;
731
743
if ( ! events || events . includes ( "HRM" ) ) Bangle . setHRMPower ( 1 , "imageclock" ) ;
732
744
if ( ! events || events . includes ( "pressure" ) ) Bangle . setBarometerPower ( 1 , 'imageclock' ) ;
@@ -744,43 +756,13 @@ let firstDraw = true;
744
756
initialDraw ( watchfaceResources , watchface ) ;
745
757
} , lockedRedraw , ( v ) => {
746
758
//print("New matched locked interval", v);
747
- lockedDrawInterval . push ( v ) ;
759
+ s . ldi . push ( v ) ;
748
760
} , lastDrawTime ) ;
749
761
Bangle . setHRMPower ( 0 , "imageclock" ) ;
750
762
Bangle . setBarometerPower ( 0 , 'imageclock' ) ;
751
763
}
752
764
} ;
753
765
754
-
755
- let showWidgetsChanged = false ;
756
-
757
- let restoreWidgetDraw = function ( ) {
758
- require ( "widget_utils" ) . show ( ) ;
759
- Bangle . drawWidgets ( ) ;
760
- } ;
761
-
762
- let handleSwipe = function ( lr , ud ) {
763
- if ( ! showWidgets && ud == 1 ) {
764
- //print("Enable widgets");
765
- restoreWidgetDraw ( ) ;
766
- showWidgetsChanged = true ;
767
- }
768
- if ( showWidgets && ud == - 1 ) {
769
- //print("Disable widgets");
770
- clearWidgetsDraw ( ) ;
771
- firstDraw = true ;
772
- showWidgetsChanged = true ;
773
- }
774
- if ( showWidgetsChanged ) {
775
- showWidgetsChanged = false ;
776
- //print("Draw after widget change");
777
- showWidgets = ud == 1 ;
778
- initialDraw ( ) ;
779
- }
780
- } ;
781
-
782
- Bangle . on ( 'swipe' , handleSwipe ) ;
783
-
784
766
if ( ! events || events . includes ( "pressure" ) ) {
785
767
Bangle . on ( 'pressure' , handlePressure ) ;
786
768
try {
@@ -799,14 +781,6 @@ let firstDraw = true;
799
781
if ( ! events || events . includes ( "charging" ) ) {
800
782
Bangle . on ( 'charging' , handleCharging ) ;
801
783
}
802
-
803
- let originalWidgetDraw = { } ;
804
- let originalWidgetArea = { } ;
805
-
806
- let clearWidgetsDraw = function ( ) {
807
- //print("Clear widget draw calls");
808
- require ( "widget_utils" ) . hide ( ) ;
809
- }
810
784
811
785
handleLock ( Bangle . isLocked ( ) , true ) ;
812
786
@@ -819,7 +793,6 @@ let firstDraw = true;
819
793
Bangle . setHRMPower ( 0 , "imageclock" ) ;
820
794
Bangle . setBarometerPower ( 0 , 'imageclock' ) ;
821
795
822
- Bangle . removeListener ( 'swipe' , handleSwipe ) ;
823
796
Bangle . removeListener ( 'lock' , handleLock ) ;
824
797
Bangle . removeListener ( 'charging' , handleCharging ) ;
825
798
Bangle . removeListener ( 'HRM' , handleHrm ) ;
@@ -829,31 +802,22 @@ let firstDraw = true;
829
802
if ( initialDrawTimeoutUnlocked ) clearTimeout ( initialDrawTimeoutUnlocked ) ;
830
803
if ( initialDrawTimeoutLocked ) clearTimeout ( initialDrawTimeoutLocked ) ;
831
804
832
- for ( let i of global . unlockedDrawInterval ) {
805
+ for ( let i of global . s . udi ) {
833
806
//print("Clearing unlocked", i);
834
807
clearInterval ( i ) ;
835
808
}
836
- delete global . unlockedDrawInterval ;
837
- for ( let i of global . lockedDrawInterval ) {
809
+ for ( let i of global . s . ldi ) {
838
810
//print("Clearing locked", i);
839
811
clearInterval ( i ) ;
840
812
}
841
- delete global . lockedDrawInterval ;
842
- delete global . showWidgets ;
843
- delete global . firstDraw ;
844
813
845
814
delete Bangle . printPerfLog ;
846
815
if ( settings . perflog ) {
847
816
delete Bangle . resetPerfLog ;
848
- delete performanceLog ;
849
817
}
850
-
851
818
cleanupDelays ( ) ;
852
- restoreWidgetDraw ( ) ;
819
+ require ( "widget_utils" ) . show ( ) ;
853
820
}
854
821
} ) ;
855
822
}
856
-
857
- Bangle . loadWidgets ( ) ;
858
- clearWidgetsDraw ( ) ;
859
823
}
0 commit comments