Subject: Error in running gtk example on cross compiled GTK with DirectFB on MIPS board

From: kaka <[email-masked]>
Date: Mon, 17 Dec 2007 14:01:05 +0530

HI ALL,

We have successfully cross compiled GTK and DIRECTFB with all its
dependencies for MIPS board.
On running the basic test example of GTK, it is getting struck in the thread
loop infinitely.
We had put the  "debug printf"  statement in the gtkmain.c and debugged the
test example.
It is getting struck in the * g_main_loop_run (loop);* given below is
the  code(code
snippet from gtkmain.c)

void
gtk_main (void)
{
  GList *tmp_list;
  GList *functions;
  GtkInitFunction *init;
  GMainLoop *loop;
printf("\n%s :: %d\n",__FILE__,__LINE__);
  gtk_main_loop_level++;

  loop = g_main_loop_new (NULL, TRUE);
  main_loops = g_slist_prepend (main_loops, loop);
printf("\n%s :: %d\n",__FILE__,__LINE__);
  tmp_list = functions = init_functions;
  init_functions = NULL;

  while (tmp_list)
    {
      init = tmp_list->data;
      tmp_list = tmp_list->next;

      (* init->function) (init->data);
      g_free (init);
    }
  g_list_free (functions);
printf("\n%s :: %d\n",__FILE__,__LINE__);
  if (g_main_loop_is_running (main_loops->data))
    {
   * printf("\n%s :: %d\n",__FILE__,__LINE__);
      GDK_THREADS_LEAVE ();
      g_main_loop_run (loop);
      GDK_THREADS_ENTER ();
*      printf("\n%s :: %d\n",__FILE__,__LINE__);
      gdk_flush ();
    }
printf("\n%s :: %d\n",__FILE__,__LINE__);
  if (quit_functions)
    {
      GList *reinvoke_list = NULL;
      GtkQuitFunction *quitf;

Given below is the src code for test example of GTK:

#include <gtk/gtk.h>

int main( int   argc, char *argv[] )
{
	GtkWidget *window;
	GtkWidget *pMainWidget;
	GdkPixbuf *image;
	gboolean ret = 0;
	gtk_init (&argc, &argv);
printf("\n\n\ngtk_init (&argc, &argv);\n\n\n");		
	window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
	
	//gtk_container_set_border_width (GTK_CONTAINER (window), 10);
	
	image  = gdk_pixbuf_new_from_file ("test.gif", NULL);
   	if (!image)
		return FALSE;
   	pMainWidget = gtk_image_new_from_pixbuf(image);
printf("\n\n\npMainWidget = gtk_image_new_from_pixbuf(image);\n\n\n");	
	gtk_widget_show (pMainWidget);
	
	gtk_container_add (GTK_CONTAINER (window), pMainWidget);
 printf("\n\n\ngtk_container_add (GTK_CONTAINER (window),
pMainWidget);\n\n\n") ;
	gtk_widget_show (window);
printf("\n\n\nABHISHEK START OF gtk_main\n\n\n");	
	gtk_main ();
printf("\n\n\nABHISHEK END OF gtk_main\n\n\n");
	return 0;
}

Can anybody Plz throw some light on it?
Thanks in advcance
-- 
Thanks & Regards,
kaka

---

From: Denis Oliver Kropp <[email-masked]>
Date: Mon, 17 Dec 2007 18:26:33 +0100

> *      printf("\n%s :: %d\n",__FILE__,__LINE__);

That's normal. If you want runtime you have to create a timer or register idle or timeout functions.

> printf("\n\n\nABHISHEK END OF gtk_main\n\n\n");

Simply/weakly put: it should not return before the application is quit.

-- 
Best regards,
  Denis Oliver Kropp

.------------------------------------------.
| DirectFB - Hardware accelerated graphics |
| http://www.directfb.org/                 |
"------------------------------------------"

---

From: kaka <[email-masked]>
Date: Tue, 18 Dec 2007 00:10:00 +0530

Hi Denis,

Thanks for the reply.
I am running same example on X86 and it is running successfully and
displaying image.
On the other hand when i am running the same example on MIPS(GTK over
DirecTFB)
image is not being displayed.

Could u plz provide some clue on it.
Thanks.

Kaka

-- 
Thanks & Regards,
kaka

---

From: kaka <[email-masked]>
Date: Thu, 20 Dec 2007 23:38:54 +0530

Hi Denis,

I am writing gfx driver for DirectFB on BroadCom chip.
Right now i am using FBdev system to display graphics on BCM chip(MIPS
platform)  which should use software fallbacks from DirectFB.Later on i 'll
add hardware accelerartion also.
My framebuffer driver for BCM chip is working fine. I have checked it by
running a small example. Also the gfxdriver for directFB is working fine for
Video and Image.
The problem which i am facing right now is that i am running the fill
rectangle example.
IT is not filling any color in the rectangle. I am always getting the black
screen.

Could you plz provide some clue on it ?
Also could you plz specify the file name and function in which directFB
library is writing into the framebuffer memory the color pixel information?

Thanks in Advance.
kaka

-- 
Thanks & Regards,
kaka

---

From: "Mike Emmel" <[email-masked]>
Date: Thu, 20 Dec 2007 11:09:54 -0800

I suspect this is related to the creation of a top level ARGB surface
when gtk is initialized.
You probably should dig around a bit but it looks to me like its a
issue with surface formats.
Since your doing the driver you should try and make sure that you get
a accelerated surface
working for Gtk/Cairo this would need to be either RGB/ARGB because of
limited pixel
format support in Cairo.

gdk_display_open in
gdkdisplay-directfb.c

See how it finally initializes and I suspect that if you do the same
in a simple DirectFB app you get the black screen
and can debug.

On Dec 20, 2007 10:08 AM, kaka <[email-masked]> wrote:
> _______________________________________________
> directfb-dev mailing list
> [email-masked]
> http://mail.directfb.org/cgi-bin/mailman/listinfo/directfb-dev
>
>