ubuntuusers.de

Seg-Fault: GtkGlArea will nicht in die GtkBox

Status: Ungelöst | Ubuntu-Version: Nicht spezifiziert
Antworten |

madi

Anmeldungsdatum:
15. Februar 2008

Beiträge: 4

Hallo,

wie der Titel schon sagt, ich kämpfe damit eine GtkGlArea2.0 in eine GtkBox zu stopfen. Es ist alles sehr seltsam:

-Laut Debugger bekommen ich den Seg-Fault schon, wenn ich versuche meine GtkGlArea in die Box zu packen (Compilen läuft jedoch einwandfrei).

-Trotzdem startet mein Programm und fängt auch brav an, OpenGL Befehle zu verarbeiten und in die GlArea zu rendern. Jedoch auch nur einen Teil, soll heißen manches wird einfach gerendert, manches nicht...

Ich habe schon sämtliche zusätzliche Libs dazu gelinkt, die mir eingefallen sind, weil momentan bin ich echt am Punkt wo ich nur noch ausprobiere. Auch die GtkGlArea direkt in das Main Window als Container zu packen läuft schief, so wie alle anderen Methoden es irgendwie irgendwo reinzupacken.

Entweder bin ich echt zu dumm zum Compilen, weil ich habe schon alles andere bis auf das Grundgerüst rauskommentiert oder es handelt sich um nen Bug. Naja, vlt weiß ja einer von euch ne Lösung, auch wenn die GlArea bestimmt net zum Alltagsgebrauch gehört ☺

Danke schon mal im Vorraus :>

Vlt hatte jemand von euch das Problem auch schon und/oder kann mir sagn, ob es sich um einen ganz offiziellen Bug handelt ☺

Hello_World

Anmeldungsdatum:
13. Juni 2006

Beiträge: 3620

Wenn Das Programm fehlerfrei compiled, dann wirst Du auch nichts dadurch erreichen, dass Du noch mehr Bibliotheken dazulinkst, denn der Code darin wird ja nie aufgerufen.
Um Dein Problem zu diagnostizieren bräuchte man aber weitere Informationen, Quelltext und ähnliches.

madi

(Themenstarter)

Anmeldungsdatum:
15. Februar 2008

Beiträge: 4

Joa, war mir schon klar, nur die Hoffnung stirbt zu letzt :>

Ganz Simples Quelltext-Beispiel:

int main(int argc, char **argv)
{
	/*Main Window, glarea for 3D Rendering*/
	GtkWidget *window, *glarea, *main_vbox;

	/*OpenGL Config*/
	int attrlist[] = {
	GDK_GL_RGBA,
	GDK_GL_DEPTH_SIZE,
	16,
	GDK_GL_NONE
	};

	gtk_init(&argc, &argv);

	window = gtk_window_new( GTK_WINDOW_TOPLEVEL);
	gtk_window_set_title(GTK_WINDOW(window), "3D Factory");

	/* Quit form main if got delete event */
	gtk_signal_connect (GTK_OBJECT (window), "destroy", GTK_SIGNAL_FUNC (gtk_main_quit), NULL);

	/* Create new OpenGL widget. */
	glarea = gtk_gl_area_new(attrlist);
	gtk_widget_set_usize (GTK_WIDGET (glarea), 600, 600);

	/*gtk_signal_connect(GTK_OBJECT(glarea), "realize", GTK_SIGNAL_FUNC(init), NULL);
  	gtk_signal_connect(GTK_OBJECT(glarea), "expose_event", GTK_SIGNAL_FUNC(draw), NULL);*/

	main_vbox = gtk_vbox_new (FALSE, 1);

		    
	/* put glarea into window and show it all */
	gtk_container_add (GTK_CONTAINER (window), main_vbox);
	gtk_box_pack_start (GTK_BOX (main_vbox), glarea, FALSE, FALSE, 0);

	gtk_widget_show(GTK_WIDGET(glarea));
	gtk_widget_show(GTK_WIDGET(main_vbox));
	gtk_widget_show(GTK_WIDGET(window));

	gtk_main();

	return 0;
}

Is nur die Main Function ohne Callbacks, weil es liegt wirklich nur an der Zeile:

gtk_box_pack_start (GTK_BOX (main_vbox), glarea, FALSE, FALSE, 0);

sagt mein Debugger, jedenfalls läuft die Main (selbst mit Callbacks) wunderbar ohne diese Zeile. Genau hier bekomme ich den Seg-Fault......

Hello_World

Anmeldungsdatum:
13. Juni 2006

Beiträge: 3620

Wenn man bei Google nach der GtkGlArea sucht, wird als dessen Homepage oft diese hier angegeben: http://www.student.oulu.fi/~jlof/gtkglarea/, und die ist mittlerweile down. In den Abhängigkeiten vom Paket gtkglarea5 ist nur gtk 1.2 als Abhängigkeit angegeben. Wahrscheinlich ist das also einfach veraltet. Ich würde Dir daher entweder ein besseres Toolkit empfehlen (sprich Qt), oder, wenn es denn GTK sein muss, die Gtk GL Extension.

Antworten |