expo-screen-orientation 8.0.2 → 8.0.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -10,6 +10,16 @@
10
10
 
11
11
  ### 💡 Others
12
12
 
13
+ ## 8.0.4 — 2025-01-10
14
+
15
+ _This version does not introduce any user-facing changes._
16
+
17
+ ## 8.0.3 — 2025-01-08
18
+
19
+ ### 🐛 Bug fixes
20
+
21
+ - [iOS] Fixed ScreenOrientation.addOrientationChangeListener() Freezes iOS Devices in Expo SDK 52, issue 33853 ([#33867](https://github.com/expo/expo/pull/33867) by [@pjdemers](https://github.com/pjdemers)
22
+
13
23
  ## 8.0.2 — 2024-12-19
14
24
 
15
25
  ### 🐛 Bug fixes
@@ -1,7 +1,7 @@
1
1
  apply plugin: 'com.android.library'
2
2
 
3
3
  group = 'host.exp.exponent'
4
- version = '8.0.2'
4
+ version = '8.0.4'
5
5
 
6
6
  def expoModulesCorePlugin = new File(project(":expo-modules-core").projectDir.absolutePath, "ExpoModulesCorePlugin.gradle")
7
7
  apply from: expoModulesCorePlugin
@@ -14,6 +14,6 @@ android {
14
14
  namespace "expo.modules.screenorientation"
15
15
  defaultConfig {
16
16
  versionCode 7
17
- versionName '8.0.2'
17
+ versionName '8.0.4'
18
18
  }
19
19
  }
@@ -204,9 +204,15 @@ public class ScreenOrientationRegistry: NSObject, UIApplicationDelegate {
204
204
  Called at the end of the screen orientation change. Notifies the controllers about the orientation change.
205
205
  */
206
206
  func screenOrientationDidChange(_ newScreenOrientation: UIInterfaceOrientation) {
207
- queue.async(flags: .barrier) {
208
- self.currentScreenOrientation = newScreenOrientation
209
-
207
+ queue.sync(flags: .barrier) {
208
+ // Write with the barrier:
209
+ if self.currentScreenOrientation != newScreenOrientation {
210
+ // Only change if necessary, to prevent listeners from re-calling this method.
211
+ self.currentScreenOrientation = newScreenOrientation
212
+ }
213
+ }
214
+ queue.async {
215
+ // Read without the barrier:
210
216
  for controller in self.orientationControllers {
211
217
  controller.screenOrientationDidChange(newScreenOrientation)
212
218
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "expo-screen-orientation",
3
- "version": "8.0.2",
3
+ "version": "8.0.4",
4
4
  "description": "Expo universal module for managing device's screen orientation",
5
5
  "main": "build/ScreenOrientation.js",
6
6
  "types": "build/ScreenOrientation.d.ts",
@@ -36,11 +36,11 @@
36
36
  "preset": "expo-module-scripts"
37
37
  },
38
38
  "devDependencies": {
39
- "expo-module-scripts": "^4.0.0"
39
+ "expo-module-scripts": "^4.0.3"
40
40
  },
41
41
  "peerDependencies": {
42
42
  "expo": "*",
43
43
  "react-native": "*"
44
44
  },
45
- "gitHead": "a246df22c427d8c6c905de0915ed50f721fdf062"
45
+ "gitHead": "986a4689b91f3efc527f7178a320b987c0005842"
46
46
  }