@@ -17,6 +17,8 @@ struct SchedulerInner {
17
17
stop : AtomicF64 ,
18
18
}
19
19
20
+ // Uses the canonical ordering for handover of values, i.e. `Acquire` on load and `Release` on
21
+ // store.
20
22
impl Scheduler {
21
23
/// Create a new Scheduler. Initial playback state will be: inactive.
22
24
pub fn new ( ) -> Self {
@@ -31,24 +33,24 @@ impl Scheduler {
31
33
32
34
/// Retrieve playback start value
33
35
pub fn get_start_at ( & self ) -> f64 {
34
- self . inner . start . load ( Ordering :: SeqCst )
36
+ self . inner . start . load ( Ordering :: Acquire )
35
37
}
36
38
37
39
/// Schedule playback start at this timestamp
38
40
pub fn start_at ( & self , start : f64 ) {
39
41
// todo panic on invalid values, or when already called
40
- self . inner . start . store ( start, Ordering :: SeqCst ) ;
42
+ self . inner . start . store ( start, Ordering :: Release ) ;
41
43
}
42
44
43
45
/// Retrieve playback stop value
44
46
pub fn get_stop_at ( & self ) -> f64 {
45
- self . inner . stop . load ( Ordering :: SeqCst )
47
+ self . inner . stop . load ( Ordering :: Acquire )
46
48
}
47
49
48
50
/// Stop playback at this timestamp
49
51
pub fn stop_at ( & self , stop : f64 ) {
50
52
// todo panic on invalid values, or when already called
51
- self . inner . stop . store ( stop, Ordering :: SeqCst ) ;
53
+ self . inner . stop . store ( stop, Ordering :: Release ) ;
52
54
}
53
55
}
54
56
@@ -74,6 +76,8 @@ struct ControllerInner {
74
76
duration : AtomicF64 ,
75
77
}
76
78
79
+ // Uses the canonical ordering for handover of values, i.e. `Acquire` on load and `Release` on
80
+ // store.
77
81
impl Controller {
78
82
/// Create a new Controller. It will not be active
79
83
pub fn new ( ) -> Self {
@@ -96,43 +100,43 @@ impl Controller {
96
100
}
97
101
98
102
pub fn loop_ ( & self ) -> bool {
99
- self . inner . loop_ . load ( Ordering :: SeqCst )
103
+ self . inner . loop_ . load ( Ordering :: Acquire )
100
104
}
101
105
102
106
pub fn set_loop ( & self , loop_ : bool ) {
103
- self . inner . loop_ . store ( loop_, Ordering :: SeqCst ) ;
107
+ self . inner . loop_ . store ( loop_, Ordering :: Release ) ;
104
108
}
105
109
106
110
pub fn loop_start ( & self ) -> f64 {
107
- self . inner . loop_start . load ( Ordering :: SeqCst )
111
+ self . inner . loop_start . load ( Ordering :: Acquire )
108
112
}
109
113
110
114
pub fn set_loop_start ( & self , loop_start : f64 ) {
111
- self . inner . loop_start . store ( loop_start, Ordering :: SeqCst ) ;
115
+ self . inner . loop_start . store ( loop_start, Ordering :: Release ) ;
112
116
}
113
117
114
118
pub fn loop_end ( & self ) -> f64 {
115
- self . inner . loop_end . load ( Ordering :: SeqCst )
119
+ self . inner . loop_end . load ( Ordering :: Acquire )
116
120
}
117
121
118
122
pub fn set_loop_end ( & self , loop_end : f64 ) {
119
- self . inner . loop_end . store ( loop_end, Ordering :: SeqCst ) ;
123
+ self . inner . loop_end . store ( loop_end, Ordering :: Release ) ;
120
124
}
121
125
122
126
pub fn offset ( & self ) -> f64 {
123
- self . inner . offset . load ( Ordering :: SeqCst )
127
+ self . inner . offset . load ( Ordering :: Acquire )
124
128
}
125
129
126
130
pub fn set_offset ( & self , offset : f64 ) {
127
- self . inner . offset . store ( offset, Ordering :: SeqCst ) ;
131
+ self . inner . offset . store ( offset, Ordering :: Release ) ;
128
132
}
129
133
130
134
pub fn duration ( & self ) -> f64 {
131
- self . inner . duration . load ( Ordering :: SeqCst )
135
+ self . inner . duration . load ( Ordering :: Acquire )
132
136
}
133
137
134
138
pub fn set_duration ( & self , duration : f64 ) {
135
- self . inner . duration . store ( duration, Ordering :: SeqCst )
139
+ self . inner . duration . store ( duration, Ordering :: Release )
136
140
}
137
141
}
138
142
0 commit comments