#include<gtk/gtk.h>
#include<cairo.h>
#include<stdlib.h>
#include <pthread.h>
GtkDrawingArea *darea;
GtkVBox *main_window_box;
GtkWindow *main_window;
const int size = 500;
int i;
static void my_draw_event( GtkWidget *widget, cairo_t *cr, void *parameter )
{
int a, b;
cairo_set_source_rgb( cr, 1, 0, 0 );
a = random()%size;
b = random()%size;
cairo_move_to( cr, a, a );
cairo_line_to( cr, b, b );
cairo_stroke(cr);
gtk_widget_show_all((GtkWidget*)main_window);
fprintf( stderr, "Values i: %4d a: %3d b: %3d\n", i, a, b );
}
static void *thread_function( void *parameter )
{
const int seconds = 1000;
for( i=0; i<seconds; i++ )
{
gtk_widget_queue_draw( (GtkWidget*)darea );
sleep(1);
}
}
int main()
{
pthread_t th;
gdk_threads_init();
gdk_threads_enter();
gtk_init( NULL, NULL );
main_window = (GtkWindow*)gtk_window_new(GTK_WINDOW_TOPLEVEL);
g_signal_connect(G_OBJECT(main_window),"destroy",G_CALLBACK(gtk_main_quit),NULL);
main_window_box = (GtkVBox*)gtk_box_new(GTK_ORIENTATION_VERTICAL, 0);
gtk_container_add (GTK_CONTAINER (main_window),(GtkWidget*)main_window_box);
darea = (GtkDrawingArea*)gtk_drawing_area_new();
gtk_box_pack_start( GTK_BOX( main_window_box ), (GtkWidget*)darea, TRUE, TRUE, 0 );
g_signal_connect( G_OBJECT(darea), "draw", G_CALLBACK( my_draw_event ), NULL );
gtk_window_set_position(GTK_WINDOW(main_window), GTK_WIN_POS_CENTER);
gtk_window_set_default_size(GTK_WINDOW(main_window), size, size );
pthread_create( &th, NULL, thread_function, NULL );
gtk_widget_show_all((GtkWidget*)main_window);
gtk_main();
gdk_threads_leave();
return 0;
}
Thanks & Regards
--
Lokesh Chakka,
Mobile: 9731023458