From be9245fda12282604ba762acdd7fc6c8aa407aff Mon Sep 17 00:00:00 2001 From: Martin Fleisz Date: Tue, 5 Mar 2013 12:59:38 +0100 Subject: [PATCH] Android: Fixed session resizing --- client/Android/FreeRDPCore/jni/android_freerdp.c | 5 +---- .../freerdp/freerdpcore/presentation/SessionActivity.java | 7 +++++-- .../src/com/freerdp/freerdpcore/services/LibFreeRDP.java | 6 +++--- 3 files changed, 9 insertions(+), 9 deletions(-) diff --git a/client/Android/FreeRDPCore/jni/android_freerdp.c b/client/Android/FreeRDPCore/jni/android_freerdp.c index 7f84dea75..cf7945374 100644 --- a/client/Android/FreeRDPCore/jni/android_freerdp.c +++ b/client/Android/FreeRDPCore/jni/android_freerdp.c @@ -83,10 +83,7 @@ void android_desktop_resize(rdpContext* context) DEBUG_ANDROID("ui_desktop_resize"); rdpGdi *gdi = context->gdi; - rdpSettings* settings = context->instance->settings; - - gdi_resize(gdi, settings->DesktopWidth, settings->DesktopHeight); - freerdp_callback("OnGraphicsResize", "(III)V", context->instance, settings->DesktopWidth, settings->DesktopHeight); + freerdp_callback("OnGraphicsResize", "(IIII)V", context->instance, gdi->width, gdi->height, gdi->dstBpp); } diff --git a/client/Android/FreeRDPCore/src/com/freerdp/freerdpcore/presentation/SessionActivity.java b/client/Android/FreeRDPCore/src/com/freerdp/freerdpcore/presentation/SessionActivity.java index 5a637930c..657678bc7 100644 --- a/client/Android/FreeRDPCore/src/com/freerdp/freerdpcore/presentation/SessionActivity.java +++ b/client/Android/FreeRDPCore/src/com/freerdp/freerdpcore/presentation/SessionActivity.java @@ -924,10 +924,13 @@ public class SessionActivity extends Activity } @Override - public void OnGraphicsResize(int width, int height) + public void OnGraphicsResize(int width, int height, int bpp) { // replace bitmap - bitmap = Bitmap.createBitmap(width, height, bitmap.getConfig()); + if (bpp > 16) + bitmap = Bitmap.createBitmap(width, height, Config.ARGB_8888); + else + bitmap = Bitmap.createBitmap(width, height, Config.RGB_565); session.setSurface(new BitmapDrawable(bitmap)); /* since sessionView can only be modified from the UI thread diff --git a/client/Android/FreeRDPCore/src/com/freerdp/freerdpcore/services/LibFreeRDP.java b/client/Android/FreeRDPCore/src/com/freerdp/freerdpcore/services/LibFreeRDP.java index 672dcd934..8fec00aa7 100644 --- a/client/Android/FreeRDPCore/src/com/freerdp/freerdpcore/services/LibFreeRDP.java +++ b/client/Android/FreeRDPCore/src/com/freerdp/freerdpcore/services/LibFreeRDP.java @@ -64,7 +64,7 @@ public class LibFreeRDP boolean OnAuthenticate(StringBuilder username, StringBuilder domain, StringBuilder password); boolean OnVerifiyCertificate(String subject, String issuer, String fingerprint); void OnGraphicsUpdate(int x, int y, int width, int height); - void OnGraphicsResize(int width, int height); + void OnGraphicsResize(int width, int height, int bpp); } private static EventListener listener; @@ -237,14 +237,14 @@ public class LibFreeRDP uiEventListener.OnGraphicsUpdate(x, y, width, height); } - private static void OnGraphicsResize(int inst, int width, int height) + private static void OnGraphicsResize(int inst, int width, int height, int bpp) { SessionState s = GlobalApp.getSession(inst); if (s == null) return; UIEventListener uiEventListener = s.getUIEventListener(); if (uiEventListener != null) - uiEventListener.OnGraphicsResize(width, height); + uiEventListener.OnGraphicsResize(width, height, bpp); } public static String getVersion()