[gtk-frdp] frdp-session: Rework drawing logic
- From: Felipe Borges <felipeborges src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gtk-frdp] frdp-session: Rework drawing logic
- Date: Mon, 4 Apr 2022 13:58:06 +0000 (UTC)
commit 3a58b548133bbf243297bfa19204bc22c202545a
Author: Felipe Borges <felipeborges gnome org>
Date: Fri Apr 1 15:24:07 2022 +0200
frdp-session: Rework drawing logic
src/frdp-session.c | 44 +++++++++++++++++---------------------------
1 file changed, 17 insertions(+), 27 deletions(-)
---
diff --git a/src/frdp-session.c b/src/frdp-session.c
index b1bee1b..f4133dc 100644
--- a/src/frdp-session.c
+++ b/src/frdp-session.c
@@ -170,41 +170,34 @@ frdp_session_get_best_color_depth (FrdpSession *self)
static void
create_cairo_surface (FrdpSession *self)
{
+ FrdpSessionPrivate *priv = self->priv;
+ rdpSettings *settings;
rdpGdi *gdi;
gint stride;
- if (self->priv->surface != NULL) {
- cairo_surface_mark_dirty (self->priv->surface);
- cairo_surface_destroy (self->priv->surface);
+ if (priv->surface != NULL) {
+ cairo_surface_mark_dirty (priv->surface);
+ cairo_surface_destroy (priv->surface);
self->priv->surface = NULL;
}
- gdi = self->priv->freerdp_session->context->gdi;
+ gdi = priv->freerdp_session->context->gdi;
+
+ settings = priv->freerdp_session->context->settings;
+ gdi_resize (gdi, settings->DesktopWidth, settings->DesktopHeight);
- 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);
+ gtk_widget_set_size_request (priv->display,
+ settings->DesktopWidth,
+ settings->DesktopHeight);
- stride = cairo_format_stride_for_width (self->priv->cairo_format, gdi->width);
+ stride = cairo_format_stride_for_width (priv->cairo_format, gdi->width);
self->priv->surface =
cairo_image_surface_create_for_data ((unsigned char*) gdi->primary_buffer,
- self->priv->cairo_format,
+ priv->cairo_format,
gdi->width,
gdi->height,
stride);
- cairo_surface_flush (self->priv->surface);
-}
-
-static void
-frdp_session_size_allocate (GtkWidget *widget,
- GtkAllocation *allocation,
- gpointer user_data)
-{
- FrdpSession *self = (FrdpSession*) user_data;
-
- create_cairo_surface (self);
+ cairo_surface_flush (priv->surface);
}
static void
@@ -255,6 +248,8 @@ frdp_session_draw (GtkWidget *widget,
{
FrdpSession *self = (FrdpSession*) user_data;
+ create_cairo_surface (self);
+
if (self->priv->scaling) {
cairo_translate (cr, self->priv->offset_x, self->priv->offset_y);
cairo_scale (cr, self->priv->scale_x, self->priv->scale_y);
@@ -361,9 +356,7 @@ static gboolean
frdp_post_connect (freerdp *freerdp_session)
{
FrdpSession *self = ((frdpContext *) freerdp_session->context)->self;
- rdpGdi *gdi;
guint32 color_format;
- gint stride;
switch (frdp_session_get_best_color_depth (self)) {
case 32:
@@ -386,7 +379,6 @@ frdp_post_connect (freerdp *freerdp_session)
}
gdi_init (freerdp_session, color_format);
- gdi = freerdp_session->context->gdi;
freerdp_session->update->BeginPaint = frdp_begin_paint;
freerdp_session->update->EndPaint = frdp_end_paint;
@@ -563,8 +555,6 @@ frdp_session_connect_thread (GTask *task,
G_CALLBACK (frdp_session_draw), self);
g_signal_connect (self->priv->display, "configure-event",
G_CALLBACK (frdp_session_configure_event), self);
- g_signal_connect (self->priv->display, "size-allocate",
- G_CALLBACK (frdp_session_size_allocate), self);
self->priv->update_id = g_idle_add ((GSourceFunc) update, self);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]