Turned of artefacts while resizing window
This commit is contained in:
@@ -72,6 +72,7 @@ struct GTK_STRUCT {
|
|||||||
gulong embed_xid;
|
gulong embed_xid;
|
||||||
cairo_surface_t *surface = NULL;
|
cairo_surface_t *surface = NULL;
|
||||||
bool is_fullscreen = false;
|
bool is_fullscreen = false;
|
||||||
|
bool is_active = false;
|
||||||
};
|
};
|
||||||
|
|
||||||
static GTK_STRUCT * GTK_data = NULL;
|
static GTK_STRUCT * GTK_data = NULL;
|
||||||
@@ -117,7 +118,7 @@ std::string find_mac() {
|
|||||||
iface_stream.open("/sys/class/net/wlp2s0/address");
|
iface_stream.open("/sys/class/net/wlp2s0/address");
|
||||||
}
|
}
|
||||||
if (!iface_stream) {
|
if (!iface_stream) {
|
||||||
printf("No wlp2s0");
|
printf("No wlp2s0 \n");
|
||||||
return "";
|
return "";
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -144,31 +145,37 @@ static void gtk_destroy (GtkWidget * widget, gpointer data) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
gboolean draw_callback (GtkWidget *widget, cairo_t *cr, gpointer data) {
|
gboolean draw_callback (GtkWidget *widget, cairo_t *cr, gpointer data) {
|
||||||
guint width, height;
|
|
||||||
GdkRGBA color;
|
|
||||||
GtkStyleContext *context;
|
|
||||||
|
|
||||||
context = gtk_widget_get_style_context (widget);
|
if(!GTK_data->is_active) {
|
||||||
|
|
||||||
width = gtk_widget_get_allocated_width (widget);
|
guint width, height;
|
||||||
height = gtk_widget_get_allocated_height (widget);
|
GdkRGBA color;
|
||||||
|
GtkStyleContext *context;
|
||||||
|
|
||||||
gtk_render_background (context, cr, 0, 0, width, height);
|
context = gtk_widget_get_style_context (widget);
|
||||||
|
|
||||||
cairo_rectangle (cr, 0, 0, width, height);
|
width = gtk_widget_get_allocated_width (widget);
|
||||||
|
height = gtk_widget_get_allocated_height (widget);
|
||||||
|
|
||||||
gtk_style_context_get_color (context,
|
gtk_render_background (context, cr, 0, 0, width, height);
|
||||||
gtk_style_context_get_state (context),
|
|
||||||
&color);
|
|
||||||
gdk_cairo_set_source_rgba (cr, &color);
|
|
||||||
|
|
||||||
cairo_fill (cr);
|
cairo_rectangle (cr, 0, 0, width, height);
|
||||||
|
|
||||||
return FALSE;
|
gtk_style_context_get_color (context,
|
||||||
|
gtk_style_context_get_state (context),
|
||||||
|
&color);
|
||||||
|
gdk_cairo_set_source_rgba (cr, &color);
|
||||||
|
|
||||||
|
cairo_fill (cr);
|
||||||
|
}
|
||||||
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
void configure_callback(GtkWindow *window, GdkEvent *event, gpointer data) {
|
void configure_callback(GtkWindow *window, GdkEvent *event, gpointer data) {
|
||||||
gtk_widget_queue_draw(GTK_data->video_window);
|
|
||||||
|
if(!GTK_data->is_active) {
|
||||||
|
gtk_widget_queue_draw(GTK_data->video_window);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -176,8 +183,6 @@ static gboolean click_callback(GtkWindow *window, GdkEventButton *event, gpointe
|
|||||||
|
|
||||||
|
|
||||||
if (event->button == 1 && event->type == GDK_2BUTTON_PRESS) {
|
if (event->button == 1 && event->type == GDK_2BUTTON_PRESS) {
|
||||||
printf("Double clicked!");
|
|
||||||
|
|
||||||
if(GTK_data->is_fullscreen) {
|
if(GTK_data->is_fullscreen) {
|
||||||
gtk_window_unfullscreen((GtkWindow*)GTK_data->app_window);
|
gtk_window_unfullscreen((GtkWindow*)GTK_data->app_window);
|
||||||
GTK_data->is_fullscreen = false;
|
GTK_data->is_fullscreen = false;
|
||||||
@@ -271,7 +276,8 @@ int main(int argc, char *argv[]) {
|
|||||||
g_signal_connect (G_OBJECT (GTK_data->video_window), "draw",G_CALLBACK (draw_callback), NULL);
|
g_signal_connect (G_OBJECT (GTK_data->video_window), "draw",G_CALLBACK (draw_callback), NULL);
|
||||||
g_signal_connect (G_OBJECT (GTK_data->app_window), "button-press-event" ,G_CALLBACK (click_callback), NULL);
|
g_signal_connect (G_OBJECT (GTK_data->app_window), "button-press-event" ,G_CALLBACK (click_callback), NULL);
|
||||||
g_signal_connect (G_OBJECT (GTK_data->app_window), "key_press_event", G_CALLBACK (on_key_press), NULL);
|
g_signal_connect (G_OBJECT (GTK_data->app_window), "key_press_event", G_CALLBACK (on_key_press), NULL);
|
||||||
g_signal_connect(G_OBJECT(GTK_data->app_window), "configure-event", G_CALLBACK(configure_callback), NULL);
|
g_signal_connect(G_OBJECT(GTK_data->video_window), "configure_event", G_CALLBACK(configure_callback), NULL);
|
||||||
|
|
||||||
|
|
||||||
GTK_data->video_window_xwindow = gtk_widget_get_window (GTK_data->video_window);
|
GTK_data->video_window_xwindow = gtk_widget_get_window (GTK_data->video_window);
|
||||||
GTK_data->embed_xid = GDK_WINDOW_XID (GTK_data->video_window_xwindow);
|
GTK_data->embed_xid = GDK_WINDOW_XID (GTK_data->video_window_xwindow);
|
||||||
@@ -297,10 +303,13 @@ int main(int argc, char *argv[]) {
|
|||||||
// Server callbacks
|
// Server callbacks
|
||||||
extern "C" void conn_init(void *cls) {
|
extern "C" void conn_init(void *cls) {
|
||||||
//video_renderer_update_background(video_renderer, 1);
|
//video_renderer_update_background(video_renderer, 1);
|
||||||
|
GTK_data->is_active = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
extern "C" void conn_destroy(void *cls) {
|
extern "C" void conn_destroy(void *cls) {
|
||||||
|
GTK_data->is_active = false;
|
||||||
gtk_widget_queue_draw(GTK_data->video_window);
|
gtk_widget_queue_draw(GTK_data->video_window);
|
||||||
|
|
||||||
//int width = gtk_widget_get_allocated_width (GTK_data->video_window);
|
//int width = gtk_widget_get_allocated_width (GTK_data->video_window);
|
||||||
//int height = gtk_widget_get_allocated_height (GTK_data->video_window);
|
//int height = gtk_widget_get_allocated_height (GTK_data->video_window);
|
||||||
//video_renderer_update_background(video_renderer, -1, width, height);
|
//video_renderer_update_background(video_renderer, -1, width, height);
|
||||||
|
|||||||
Reference in New Issue
Block a user