對不起,我的英語不好。
*的Mac OS X 10.8.3
* XQuartz 2.7.4
* GTK + 3.4.4
:gtk +在調用任何開羅繪圖功能時崩潰
我對這篇文章https://developer.gnome.org/gtk3/stable/gtk-getting-started.html
我的環境下學習的GTK + 3作爲的 「HelloWorld」 *的i686-蘋果darwin11-LLVM-GCC-4.2
一切正常之前,我試圖調用此函數作爲繪製的信號處理程序:
static gboolean configure_event_cb(GtkWidget* widget,GdkEventConfigure* event,gpointer data) { if(surface) cairo_surface_destroy(surface); surface = gdk_window_create_similar_surface(gtk_widget_get_window(widget), CAIRO_CONTENT_COLOR, gtk_widget_get_allocated_width(widget), gtk_widget_get_allocated_height(widget)); //非對象類型.看做普通的struct. cairo看做類似Graphics的靜態類. cairo_t* cr = cairo_create(surface); cairo_set_source_rgb(cr, 1.0, 1.0, 1.0); cairo_paint(cr); cairo_destroy(cr); return TRUE; }
程序在其他函數中始終在「cairo_paint(cr)」或「cairo_fill」行上崩潰。這裏是調用堆棧:
libcairo.2.dylib`_cairo_default_context_in_clip: 0x100a71ff5: pushq %rbp 0x100a71ff6: movq %rsp, %rbp 0x100a71ff9: pushq %rbx 0x100a71ffa: pushq %rax 0x100a71ffb: movq %rsi, %rbx 0x100a71ffe: movq 40(%rdi), %rdi 0x100a72002: callq 0x100a761c1 ; _cairo_gstate_in_clip 0x100a72007: movl %eax, (%rbx) 0x100a72009: xorl %eax, %eax 0x100a7200b: addq $8, %rsp 0x100a7200f: popq %rbx 0x100a72010: popq %rbp 0x100a72011: ret
有人能幫助我嗎?
謝謝@gcbenison。我將表面變量聲明爲靜態全局,就像教程所做的一樣。即使我在教程中編寫了所有原始代碼以進行測試,它也崩潰了。破壞函數似乎不成問題:-(。 – Nozama