[gtk-frdp/gtk-frdp-0-1] frdp-session: Resize gdi when recreating cairo surface



commit 930d64337cc54b9887f9d61d410d734a30feb5c9
Author: Felipe Borges <felipeborges gnome org>
Date:   Mon Apr 4 11:39:39 2022 +0200

    frdp-session: Resize gdi when recreating cairo surface

 src/frdp-session.c | 26 ++++++++++++--------------
 1 file changed, 12 insertions(+), 14 deletions(-)
---
diff --git a/src/frdp-session.c b/src/frdp-session.c
index 9e11759..b1bee1b 100644
--- a/src/frdp-session.c
+++ b/src/frdp-session.c
@@ -180,6 +180,13 @@ create_cairo_surface (FrdpSession *self)
   }
 
   gdi = self->priv->freerdp_session->context->gdi;
+
+  GtkWidget *scrolled = gtk_widget_get_ancestor (self->priv->display, GTK_TYPE_SCROLLED_WINDOW);
+  gdi_resize (gdi, gtk_widget_get_allocated_width (scrolled),
+                   gtk_widget_get_allocated_height (scrolled));
+  gtk_widget_set_size_request (self->priv->display,
+                               gdi->width, gdi->height);
+
   stride = cairo_format_stride_for_width (self->priv->cairo_format, gdi->width);
   self->priv->surface =
       cairo_image_surface_create_for_data ((unsigned char*) gdi->primary_buffer,
@@ -197,19 +204,7 @@ frdp_session_size_allocate (GtkWidget     *widget,
 {
   FrdpSession *self = (FrdpSession*) user_data;
 
-  gtk_widget_realize (self->priv->display);
-  GtkWidget *scrolled = gtk_widget_get_ancestor (self->priv->display, GTK_TYPE_SCROLLED_WINDOW);
-  gtk_widget_queue_draw_area (self->priv->display,
-                              0,
-                              0,
-                              gtk_widget_get_allocated_width (scrolled),
-                              gtk_widget_get_allocated_height (scrolled));
   create_cairo_surface (self);
-
-  g_print ("Display size-allocate (%d, %d)\n\n", allocation->width, allocation->height);
-  g_print ("SCrolled (%d, %d)\n\n",
-                              gtk_widget_get_allocated_width (scrolled),
-                              gtk_widget_get_allocated_height (scrolled));
 }
 
 static void
@@ -505,6 +500,10 @@ frdp_session_init_freerdp (FrdpSession *self)
   settings->UseRdpSecurityLayer = FALSE;
 
   settings->NegotiateSecurityLayer = TRUE;
+
+  settings->DesktopResize = TRUE;
+  settings->DynamicResolutionUpdate = TRUE;
+  settings->SupportDisplayControl = TRUE;
 }
 
 static void
@@ -559,6 +558,7 @@ frdp_session_connect_thread (GTask        *task,
   }
 
   gtk_widget_realize (self->priv->display);
+  create_cairo_surface (self);
   g_signal_connect (self->priv->display, "draw",
                     G_CALLBACK (frdp_session_draw), self);
   g_signal_connect (self->priv->display, "configure-event",
@@ -568,8 +568,6 @@ frdp_session_connect_thread (GTask        *task,
 
   self->priv->update_id = g_idle_add ((GSourceFunc) update, self);
 
-  //create_cairo_surface (self);
-
   g_task_return_boolean (task, TRUE);
 }
 


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]