@@ -892,40 +892,45 @@ avatar_chooser_update_preview_cb (GtkFileChooser *file_chooser,
892892static gboolean
893893destroy_chooser (GtkWidget * chooser )
894894{
895- gtk_widget_destroy (chooser );
896- return FALSE;
895+ gtk_widget_destroy (chooser );
896+ return FALSE;
897897}
898898
899899static void
900- webcam_response_cb (GtkDialog * dialog ,
901- int response ,
902- EmpathyAvatarChooser * chooser )
900+ webcam_response_cb (GtkDialog * dialog ,
901+ int response ,
902+ EmpathyAvatarChooser * chooser )
903903{
904- if (response == GTK_RESPONSE_ACCEPT ) {
905- GdkPixbuf * pb ;
906-
907- g_object_get (G_OBJECT (dialog ), "pixbuf" , & pb , NULL );
908- /*TODO: use picture data as avatar*/
909- g_object_unref (pb );
910- }
911- if (response != GTK_RESPONSE_DELETE_EVENT &&
912- response != GTK_RESPONSE_NONE )
913- g_idle_add ((GSourceFunc ) destroy_chooser , dialog );
904+ if (response == GTK_RESPONSE_ACCEPT ) {
905+ GdkPixbuf * pb ;
906+ /* TODO: decide on a propper place to this image */
907+ const char * filename = "/tmp/empathy-avatar.jpg" ;
908+
909+ g_object_get (G_OBJECT (dialog ), "pixbuf" , & pb , NULL );
910+
911+
912+ gdk_pixbuf_save (pb , filename , "jpeg" , NULL , NULL );
913+ avatar_chooser_set_image_from_file (chooser , filename );
914+ g_object_unref (pb );
915+ }
916+ if (response != GTK_RESPONSE_DELETE_EVENT &&
917+ response != GTK_RESPONSE_NONE )
918+ g_idle_add ((GSourceFunc ) destroy_chooser , dialog );
914919}
915920
916921static void
917922choose_avatar_from_webcam (GtkWidget * widget ,
918923 EmpathyAvatarChooser * chooser )
919924{
920- GtkWidget * window ;
921-
922- window = cheese_avatar_chooser_new ();
923- gtk_window_set_transient_for (GTK_WINDOW (window ),
924- GTK_WINDOW (gtk_widget_get_toplevel (widget )));
925- gtk_window_set_modal (GTK_WINDOW (window ), TRUE);
926- g_signal_connect (G_OBJECT (window ), "response" ,
927- G_CALLBACK (webcam_response_cb ), chooser );
928- gtk_widget_show (window );
925+ GtkWidget * window ;
926+
927+ window = cheese_avatar_chooser_new ();
928+ gtk_window_set_transient_for (GTK_WINDOW (window ),
929+ GTK_WINDOW (gtk_widget_get_toplevel (widget )));
930+ gtk_window_set_modal (GTK_WINDOW (window ), TRUE);
931+ g_signal_connect (G_OBJECT (window ), "response" ,
932+ G_CALLBACK (webcam_response_cb ), chooser );
933+ gtk_widget_show (window );
929934}
930935#endif /* HAVE_CHEESE */
931936
0 commit comments