Skip to content

Commit 696367e

Browse files
committed
fix(android): run hardware acceleration on UI thread
1 parent 44dc8fc commit 696367e

1 file changed

Lines changed: 20 additions & 0 deletions

File tree

com.onesignal.unity.android/Runtime/OneSignalAndroid.cs

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -133,6 +133,8 @@ public override void Initialize(string appId)
133133
var unityPlayer = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
134134
var activity = unityPlayer.GetStatic<AndroidJavaObject>("currentActivity");
135135

136+
_enableHardwareAcceleration(activity);
137+
136138
_sdkWrapperClass.CallStatic("setSdkType", "unity");
137139
_sdkWrapperClass.CallStatic("setSdkVersion", VersionHeader);
138140

@@ -174,6 +176,24 @@ public override void Initialize(string appId)
174176
_completedInit(appId);
175177
}
176178

179+
/// <summary>
180+
/// Unity sets android:hardwareAccelerated="false" on its Activity which
181+
/// prevents WebView transparent backgrounds from rendering. The native SDK
182+
/// displays in-app messages via a PopupWindow whose window inherits this
183+
/// setting, causing the IAM to render with an opaque white background.
184+
/// Enabling the flag at the window level restores transparency without
185+
/// affecting Unity's own GL/Vulkan rendering surface.
186+
/// </summary>
187+
private static void _enableHardwareAcceleration(AndroidJavaObject activity)
188+
{
189+
activity.Call("runOnUiThread", new AndroidJavaRunnable(() =>
190+
{
191+
const int FLAG_HARDWARE_ACCELERATED = 0x01000000;
192+
using var window = activity.Call<AndroidJavaObject>("getWindow");
193+
window.Call("setFlags", FLAG_HARDWARE_ACCELERATED, FLAG_HARDWARE_ACCELERATED);
194+
}));
195+
}
196+
177197
public override void Login(string externalId, string jwtBearerToken = null)
178198
{
179199
_sdkClass.CallStatic("login", externalId, jwtBearerToken);

0 commit comments

Comments
 (0)