In meinem Toplevel Window gibt es mehrere 'GtkDrawingArea'. Auf diese möchte ich zeichnen. Im Timerinterrupt (50ms) wird eine Schnittstelle abgefragt und bei entsprechenden Daten sollen dies Regionen neu gezeichnet werden (siehe Anhang). Mit einer 'GtkDrawingArea' klappt das auch ganz gut, nehme ich die zweite dazu, stürzt das Programm ab: GdK-CRITICAL **: The window 0xabc has no drawing context. You must call gdk_window_begin_draw_frame() before calling gdk_window_end_draw_frame(). GdK-CRITICAL **: The window 0xzyx already has a drawing context. You cannot call gdk_window_begin_draw_frame() without calling gdk_window_end_draw_frame() first. GdK-CRITICAL **: gdk_drawing_context_get_cairo_context: assertion 'GDK_IS_DRAWING_CONTEXT (context)' failed Segmentation fault (core dumped) Im Grunde genomen will ich die cairo_region nur auf den nächsten Zeichenbereich setzen, aber da fehlt mir die Lösung.
Das hier https://docs.gtk.org/gtk3/drawing-model.html vorher mal lesen und verstehen, dann die Warnings deiner Ausgabe befolgen und entspr. abstellen.
Vielen Dank für die ausführliche Hilfe! Die Beschreibung habe ich gelesen und ich denke, weitestgehend verstanden. Auf jeden Fall gibt es zu einem Fenster nur einen cairo_context. Wie mir allerdings an-und abschalten der Doppelpufferung oder das setzen von gtk_widget_set_app_paintable() helfen sollen, ist mir noch nicht ganz klar. Aber macht ja nichts, mein Problem besteht jedenfalls weiterhin.
:
Bearbeitet durch User
Gelöst! Mittlerweile konnte das oben beschriebene Problem durch ingenieurmäßige Evaluierungsmethoden sowie unter massivem Einsatz von NI gelöst werden.
Axel V. schrieb: > Gelöst! > > > Mittlerweile konnte das oben beschriebene Problem durch ingenieurmäßige > Evaluierungsmethoden sowie unter massivem Einsatz von NI gelöst werden. So sollte es sein. Wenn alle Problem auf diese Art gelöst werden würden, hätte wir nicht diese Unmassen mehr oder weniger unbrauchbare Scheiße, die so an Geräten aller Art am Markt ist. Allerdings: Auch wenn du dein Problem gelöst hast, bringt das anderen rein garnix. Dazu müsstest du hier die Ursache und die Lösung darstellen. Hast du nicht getan. Dafür kann man wohl die sehr wahrscheinliche Begründung annehmen: du hast Mist programmiert und magst den Mist nicht zeigen. Und die Lösung war, es einfach richtig zu machen. War wohl wie so oft: kaum macht man etwas richtig, schon funktioniert es...
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.