From 6ac007b2ba50d5d909f09f5b4632558d1192a570 Mon Sep 17 00:00:00 2001 From: Adam Miskiewicz Date: Fri, 5 Feb 2016 06:28:20 -0800 Subject: [PATCH] Use new DisplayMetrics object in `getDisplayMetrics` as to not overwrite Android global state Summary: The change in https://github.com/facebook/react-native/commit/8e603940e3fca4ed2fe420c02a66d860b53f3076 actually causes a super bad bug when `context.getResources().getDisplayMetrics()` is accessed in other parts of the application. It turns out that when you dive into the impl of `getRealMetrics`, it mutates whatever `DisplayMetrics` object is passed to it. In this case, `getDisplayMetrics` ends up mutating the `DisplayMetrics` object that sits on the application context's `Resources` instance. This PR makes that not so. /cc jesseruder ide jaysoo bestander astreet Closes https://github.com/facebook/react-native/pull/5764 Reviewed By: svcscm Differential Revision: D2902386 Pulled By: androidtrunkagent fb-gh-sync-id: 3f24b68bc7e6b4ca83808c03ef3637e1ac9a673e --- .../java/com/facebook/react/uimanager/UIManagerModule.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/ReactAndroid/src/main/java/com/facebook/react/uimanager/UIManagerModule.java b/ReactAndroid/src/main/java/com/facebook/react/uimanager/UIManagerModule.java index 725c874c3..4aab528e5 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/uimanager/UIManagerModule.java +++ b/ReactAndroid/src/main/java/com/facebook/react/uimanager/UIManagerModule.java @@ -464,7 +464,8 @@ public class UIManagerModule extends ReactContextBaseJavaModule implements private DisplayMetrics getDisplayMetrics() { Context context = getReactApplicationContext(); - DisplayMetrics displayMetrics = context.getResources().getDisplayMetrics(); + DisplayMetrics displayMetrics = new DisplayMetrics(); + displayMetrics.setTo(context.getResources().getDisplayMetrics()); WindowManager wm = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE); Display display = wm.getDefaultDisplay();