对不起,我的英语不好。
我正在按照这篇文章https://developer.gnome.org/gtk3/stable/gtk-getting-started.html学习 gtk+ 3 作为“helloworld”
我的环境:
* Mac OS X 10.8.3
* XQuartz 2.7.4
* GTk+ 3.4.4
* i686-apple-darwin11-llvm-gcc-4.2
在我尝试将此函数作为绘图的信号处理程序调用之前,一切正常:
静态 gboolean configure_event_cb(GtkWidget* 小部件,GdkEventConfigure* 事件,gpointer 数据) { 如果(表面)cairo_surface_destroy(表面); 表面 = gdk_window_create_similar_surface(gtk_widget_get_window(widget), CAIRO_CONTENT_COLOR, gtk_widget_get_allocated_width(小部件), gtk_widget_get_allocated_height(widget)); // 非对象类型。看做普通的结构。cairo 看做类似图形的静态类。 cairo_t* cr = cairo_create(surface); cairo_set_source_rgb(cr, 1.0, 1.0, 1.0); cairo_paint(cr); cairo_destroy(cr); 返回真; }
程序总是在其他函数中的“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:调用 0x100a761c1 ;_cairo_gstate_in_clip 0x100a72007: movl %eax, (%rbx) 0x100a72009: xorl %eax, %eax 0x100a7200b: addq $8, %rsp 0x100a7200f:popq %rbx 0x100a72010:popq %rbp 0x100a72011: 恢复
有人可以帮我吗?