Mercurial > projects > doodle
changeset 88:100dd23c7bdf
Ch ch ch changes:
* Handle SIGINT like a geek for now
* GtkD Context has no destructor and hence it would seem, a memory leak
* No more gtk_* C-function invocations
* Configured my GtkD patches
* (Comments)
author | David Bryant <bagnose@gmail.com> |
---|---|
date | Wed, 18 Aug 2010 23:51:43 +0930 |
parents | c825e6db57c1 |
children | 467febed7367 |
files | doodle/core/backtrace.d doodle/dia/layer_stack.d doodle/gtk/cairo_canvas.d doodle/tk/screen_model.d excre/gtkd-patches.diff |
diffstat | 5 files changed, 511 insertions(+), 33 deletions(-) [+] |
line wrap: on
line diff
--- a/doodle/core/backtrace.d Mon Aug 16 22:54:16 2010 +0930 +++ b/doodle/core/backtrace.d Wed Aug 18 23:51:43 2010 +0930 @@ -31,6 +31,7 @@ case SIGFPE: return "SIGFPE"; case SIGILL: return "SIGILL"; case SIGABRT: return "SIGABRT"; + case SIGINT: return "SIGINT"; default: return ""; } } @@ -44,6 +45,7 @@ signal(SIGFPE, &signalHandler); signal(SIGILL, &signalHandler); signal(SIGSEGV, &signalHandler); + signal(SIGINT, &signalHandler); } static this() {
--- a/doodle/dia/layer_stack.d Mon Aug 16 22:54:16 2010 +0930 +++ b/doodle/dia/layer_stack.d Wed Aug 18 23:51:43 2010 +0930 @@ -13,7 +13,7 @@ // Take the union of all layer bounds Rectangle bounds = Rectangle.DEFAULT; foreach (layer; _layers) { bounds = bounds | layer.bounds; } - assert(bounds.valid); + //assert(bounds.valid); return bounds; }
--- a/doodle/gtk/cairo_canvas.d Mon Aug 16 22:54:16 2010 +0930 +++ b/doodle/gtk/cairo_canvas.d Wed Aug 18 23:51:43 2010 +0930 @@ -208,14 +208,9 @@ bool onExpose(GdkEventExpose * event, Widget widget) { assert(widget is _drawingArea); - Drawable dr = _drawingArea.getWindow; - - int width, height; - dr.getSize(width, height); - //trace("Got expose %dx%d\n", width, height); - - scope modelCr = new Context(dr); - scope screenCr = new Context(dr); + auto dr = _drawingArea.getWindow; + scope modelCr = new Context(dr); // Causing a memory leak! + scope screenCr = new Context(dr); // Causing a memory leak! Rectangle screenDamage = event is null ? _screenModel.viewBoundsScreen : @@ -344,8 +339,8 @@ //trace("onGrabFocus"); } - void onGrabNotify(gboolean what, Widget widget){ - trace("onGrabNotify"); + void onGrabNotify(gboolean what, Widget widget) { + trace("onGrabNotify: %s", what); } void onAdjustmentValueChanged(Adjustment adjustment) { @@ -393,28 +388,18 @@ Rectangle viewBoundsModel = _screenModel.viewBoundsModel; // Update the adjustments - - GtkAdjustment * hGtkAdjustment = _hAdjustment.getAdjustmentStruct; - GtkAdjustment * vGtkAdjustment = _vAdjustment.getAdjustmentStruct; - - gtk_adjustment_set_lower(hGtkAdjustment, _screenModel.canvasBoundsModel.x0); - gtk_adjustment_set_upper(hGtkAdjustment, _screenModel.canvasBoundsModel.x1); - gtk_adjustment_set_value(hGtkAdjustment, viewLeftBottom.x); - gtk_adjustment_set_step_increment(hGtkAdjustment, _screenModel.canvasBoundsModel.w / 16.0); - gtk_adjustment_set_page_increment(hGtkAdjustment, _screenModel.canvasBoundsModel.w / 4.0); - gtk_adjustment_set_page_size(hGtkAdjustment, viewBoundsModel.w); - - gtk_adjustment_set_lower(vGtkAdjustment, _screenModel.canvasBoundsModel.y0); - gtk_adjustment_set_upper(vGtkAdjustment, _screenModel.canvasBoundsModel.y1); - gtk_adjustment_set_value(vGtkAdjustment, viewLeftBottom.y); - gtk_adjustment_set_step_increment(vGtkAdjustment, _screenModel.canvasBoundsModel.h / 16.0); - gtk_adjustment_set_page_increment(vGtkAdjustment, _screenModel.canvasBoundsModel.h / 4.0); - gtk_adjustment_set_page_size(vGtkAdjustment, viewBoundsModel.h); - - _hAdjustment.changed; - _hAdjustment.valueChanged; - _vAdjustment.changed; - _vAdjustment.valueChanged; + _hAdjustment.configure(viewLeftBottom.x, + _screenModel.canvasBoundsModel.x0, + _screenModel.canvasBoundsModel.x1, + _screenModel.canvasBoundsModel.w / 16.0, + _screenModel.canvasBoundsModel.w / 4.0, + _screenModel.viewBoundsModel.w); + _vAdjustment.configure(viewLeftBottom.y, + _screenModel.canvasBoundsModel.y0, + _screenModel.canvasBoundsModel.y1, + _screenModel.canvasBoundsModel.h / 16.0, + _screenModel.canvasBoundsModel.h / 4.0, + _screenModel.viewBoundsModel.h); } void fixDamage() {
--- a/doodle/tk/screen_model.d Mon Aug 16 22:54:16 2010 +0930 +++ b/doodle/tk/screen_model.d Wed Aug 18 23:51:43 2010 +0930 @@ -8,6 +8,13 @@ import doodle.core.misc; } +/* +interface IScreenModelObserver { + void screenDamaged(in Rectangle screenDamage); + void cursorChanged(in Cursor cursor); +} +*/ + // This class manages the relationship between screen space and model space. // Screen is defined as the current window/viewport into the model // It provides convenient high-level operations. @@ -15,6 +22,11 @@ // x and y run right and up respectively for screen and model space class ScreenModel { + /* + void damageModel + */ + + this(in double zoom, in Rectangle canvasBoundsModel, in Rectangle viewBoundsScreen) { _zoom = zoom; _viewBoundsScreen = viewBoundsScreen;
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/excre/gtkd-patches.diff Wed Aug 18 23:51:43 2010 +0930 @@ -0,0 +1,479 @@ +Index: src/gdkpixbuf/PixbufAnimation.d +=================================================================== +--- src/gdkpixbuf/PixbufAnimation.d (revision 797) ++++ src/gdkpixbuf/PixbufAnimation.d (working copy) +@@ -167,7 +167,7 @@ + * Adds a reference to an animation. + * Returns: The same as the animation argument. + */ +- public PixbufAnimation doref() ++ public override PixbufAnimation doref() + { + // GdkPixbufAnimation * gdk_pixbuf_animation_ref (GdkPixbufAnimation *animation); + auto p = gdk_pixbuf_animation_ref(gdkPixbufAnimation); +@@ -183,7 +183,7 @@ + * gdk_pixbuf_animation_unref has been deprecated since version 2.0 and should not be used in newly-written code. Use g_object_unref(). + * Removes a reference from an animation. + */ +- public void unref() ++ public override void unref() + { + // void gdk_pixbuf_animation_unref (GdkPixbufAnimation *animation); + gdk_pixbuf_animation_unref(gdkPixbufAnimation); +Index: src/gdk/Drawable.d +=================================================================== +--- src/gdk/Drawable.d (revision 797) ++++ src/gdk/Drawable.d (working copy) +@@ -197,7 +197,7 @@ + * (Drawables were not objects in previous versions of GDK.) + * Returns: the same drawable passed in + */ +- public Drawable doref() ++ public override Drawable doref() + { + // GdkDrawable* gdk_drawable_ref (GdkDrawable *drawable); + auto p = gdk_drawable_ref(gdkDrawable); +@@ -213,7 +213,7 @@ + * gdk_drawable_unref has been deprecated since version 2.0 and should not be used in newly-written code. Use g_object_unref() instead. + * Deprecated equivalent of calling g_object_unref() on drawable. + */ +- public void unref() ++ public override void unref() + { + // void gdk_drawable_unref (GdkDrawable *drawable); + gdk_drawable_unref(gdkDrawable); +Index: src/gdk/GC.d +=================================================================== +--- src/gdk/GC.d (revision 797) ++++ src/gdk/GC.d (working copy) +@@ -211,7 +211,7 @@ + * Deprecated function; use g_object_ref() instead. + * Returns: the gc. + */ +- public GC doref() ++ public override GC doref() + { + // GdkGC * gdk_gc_ref (GdkGC *gc); + auto p = gdk_gc_ref(gdkGC); +@@ -227,7 +227,7 @@ + * gdk_gc_unref has been deprecated since version 2.0 and should not be used in newly-written code. Use g_object_unref() instead. + * Decrement the reference count of gc. + */ +- public void unref() ++ public override void unref() + { + // void gdk_gc_unref (GdkGC *gc); + gdk_gc_unref(gdkGC); +Index: src/gtk/OrientableT.d +=================================================================== +--- src/gtk/OrientableT.d (revision 797) ++++ src/gtk/OrientableT.d (working copy) +@@ -92,7 +92,7 @@ + * Since 2.16 + * Returns: the orientation of the orientable. + */ +- public GtkOrientation getOrientation() ++ public override GtkOrientation getOrientation() + { + // GtkOrientation gtk_orientable_get_orientation (GtkOrientable *orientable); + return gtk_orientable_get_orientation(getOrientableTStruct()); +@@ -104,7 +104,7 @@ + * Params: + * orientation = the orientable's new orientation. + */ +- public void setOrientation(GtkOrientation orientation) ++ public override void setOrientation(GtkOrientation orientation) + { + // void gtk_orientable_set_orientation (GtkOrientable *orientable, GtkOrientation orientation); + gtk_orientable_set_orientation(getOrientableTStruct(), orientation); +Index: src/gtk/ScaleButton.d +=================================================================== +--- src/gtk/ScaleButton.d (revision 797) ++++ src/gtk/ScaleButton.d (working copy) +@@ -366,6 +366,7 @@ + return new Widget(cast(GtkWidget*) p); + } + ++ /+ + /** + * Warning + * gtk_scale_button_set_orientation has been deprecated since version 2.16 and should not be used in newly-written code. Use gtk_orientable_set_orientation() instead. +@@ -392,4 +393,5 @@ + // GtkOrientation gtk_scale_button_get_orientation (GtkScaleButton *button); + return gtk_scale_button_get_orientation(gtkScaleButton); + } ++ +/ + } +Index: src/gtk/Style.d +=================================================================== +--- src/gtk/Style.d (revision 797) ++++ src/gtk/Style.d (working copy) +@@ -281,7 +281,7 @@ + * Increase the reference count of style. + * Returns:style. + */ +- public Style doref() ++ public override Style doref() + { + // GtkStyle* gtk_style_ref (GtkStyle *style); + auto p = gtk_style_ref(gtkStyle); +@@ -297,7 +297,7 @@ + * gtk_style_unref has been deprecated since version 2.0 and should not be used in newly-written code. use g_object_unref() instead. + * Decrease the reference count of style. + */ +- public void unref() ++ public override void unref() + { + // void gtk_style_unref (GtkStyle *style); + gtk_style_unref(gtkStyle); +Index: src/gtk/BuildableT.d +=================================================================== +--- src/gtk/BuildableT.d (revision 797) ++++ src/gtk/BuildableT.d (working copy) +@@ -95,7 +95,7 @@ + protected GtkBuildable* gtkBuildable; + + +- public GtkBuildable* getBuildableTStruct() ++ public override GtkBuildable* getBuildableTStruct() + { + return cast(GtkBuildable*)getStruct(); + } +@@ -111,7 +111,7 @@ + * buildable = a GtkBuildable + * name = name to set + */ +- public void buildableSetName(string name) ++ public override void buildableSetName(string name) + { + // void gtk_buildable_set_name (GtkBuildable *buildable, const gchar *name); + gtk_buildable_set_name(getBuildableTStruct(), Str.toStringz(name)); +@@ -127,7 +127,7 @@ + * buildable = a GtkBuildable + * Returns: the name set with gtk_buildable_set_name() + */ +- public string buildableGetName() ++ public override string buildableGetName() + { + // const gchar * gtk_buildable_get_name (GtkBuildable *buildable); + return Str.toString(gtk_buildable_get_name(getBuildableTStruct())); +@@ -142,7 +142,7 @@ + * child = child to add + * type = kind of child or NULL. allow-none. + */ +- public void addChild(Builder builder, ObjectG child, string type) ++ public override void addChild(Builder builder, ObjectG child, string type) + { + // void gtk_buildable_add_child (GtkBuildable *buildable, GtkBuilder *builder, GObject *child, const gchar *type); + gtk_buildable_add_child(getBuildableTStruct(), (builder is null) ? null : builder.getBuilderStruct(), (child is null) ? null : child.getObjectGStruct(), Str.toStringz(type)); +@@ -156,7 +156,7 @@ + * name = name of property + * value = value of property + */ +- public void setBuildableProperty(Builder builder, string name, Value value) ++ public override void setBuildableProperty(Builder builder, string name, Value value) + { + // void gtk_buildable_set_buildable_property (GtkBuildable *buildable, GtkBuilder *builder, const gchar *name, const GValue *value); + gtk_buildable_set_buildable_property(getBuildableTStruct(), (builder is null) ? null : builder.getBuilderStruct(), Str.toStringz(name), (value is null) ? null : value.getValueStruct()); +@@ -172,7 +172,7 @@ + * name = name of child to construct + * Returns: the constructed child + */ +- public ObjectG constructChild(Builder builder, string name) ++ public override ObjectG constructChild(Builder builder, string name) + { + // GObject * gtk_buildable_construct_child (GtkBuildable *buildable, GtkBuilder *builder, const gchar *name); + auto p = gtk_buildable_construct_child(getBuildableTStruct(), (builder is null) ? null : builder.getBuilderStruct(), Str.toStringz(name)); +@@ -195,7 +195,7 @@ + * to parser functions + * Returns: TRUE if a object has a custom implementation, FALSE if it doesn't. + */ +- public int customTagStart(Builder builder, ObjectG child, string tagname, GMarkupParser* parser, void** data) ++ public override int customTagStart(Builder builder, ObjectG child, string tagname, GMarkupParser* parser, void** data) + { + // gboolean gtk_buildable_custom_tag_start (GtkBuildable *buildable, GtkBuilder *builder, GObject *child, const gchar *tagname, GMarkupParser *parser, gpointer *data); + return gtk_buildable_custom_tag_start(getBuildableTStruct(), (builder is null) ? null : builder.getBuilderStruct(), (child is null) ? null : child.getObjectGStruct(), Str.toStringz(tagname), parser, data); +@@ -211,7 +211,7 @@ + * tagname = name of tag + * data = user data that will be passed in to parser functions + */ +- public void customTagEnd(Builder builder, ObjectG child, string tagname, void** data) ++ public override void customTagEnd(Builder builder, ObjectG child, string tagname, void** data) + { + // void gtk_buildable_custom_tag_end (GtkBuildable *buildable, GtkBuilder *builder, GObject *child, const gchar *tagname, gpointer *data); + gtk_buildable_custom_tag_end(getBuildableTStruct(), (builder is null) ? null : builder.getBuilderStruct(), (child is null) ? null : child.getObjectGStruct(), Str.toStringz(tagname), data); +@@ -227,7 +227,7 @@ + * tagname = the name of the tag + * data = user data created in custom_tag_start + */ +- public void customFinished(Builder builder, ObjectG child, string tagname, void* data) ++ public override void customFinished(Builder builder, ObjectG child, string tagname, void* data) + { + // void gtk_buildable_custom_finished (GtkBuildable *buildable, GtkBuilder *builder, GObject *child, const gchar *tagname, gpointer data); + gtk_buildable_custom_finished(getBuildableTStruct(), (builder is null) ? null : builder.getBuilderStruct(), (child is null) ? null : child.getObjectGStruct(), Str.toStringz(tagname), data); +@@ -243,7 +243,7 @@ + * Params: + * builder = a GtkBuilder + */ +- public void parserFinished(Builder builder) ++ public override void parserFinished(Builder builder) + { + // void gtk_buildable_parser_finished (GtkBuildable *buildable, GtkBuilder *builder); + gtk_buildable_parser_finished(getBuildableTStruct(), (builder is null) ? null : builder.getBuilderStruct()); +@@ -257,7 +257,7 @@ + * childname = name of child + * Returns: the internal child of the buildable object + */ +- public ObjectG getInternalChild(Builder builder, string childname) ++ public override ObjectG getInternalChild(Builder builder, string childname) + { + // GObject * gtk_buildable_get_internal_child (GtkBuildable *buildable, GtkBuilder *builder, const gchar *childname); + auto p = gtk_buildable_get_internal_child(getBuildableTStruct(), (builder is null) ? null : builder.getBuilderStruct(), Str.toStringz(childname)); +Index: src/gtk/ObjectGtk.d +=================================================================== +--- src/gtk/ObjectGtk.d (revision 797) ++++ src/gtk/ObjectGtk.d (working copy) +@@ -227,7 +227,7 @@ + * Increases the reference count of the object. + * Returns:object. + */ +- public ObjectGtk doref() ++ public override ObjectGtk doref() + { + // GtkObject* gtk_object_ref (GtkObject *object); + auto p = gtk_object_ref(gtkObject); +@@ -244,7 +244,7 @@ + * Decreases the reference count of an object. When its reference count drops + * to 0, the object is finalized (i.e. its memory is freed). + */ +- public void unref() ++ public override void unref() + { + // void gtk_object_unref (GtkObject *object); + gtk_object_unref(gtkObject); +Index: src/gtk/RecentChooserMenu.d +=================================================================== +--- src/gtk/RecentChooserMenu.d (revision 797) ++++ src/gtk/RecentChooserMenu.d (working copy) +@@ -194,6 +194,7 @@ + this(cast(GtkRecentChooserMenu*) p); + } + ++ /+ + /** + * Returns the value set by gtk_recent_chooser_menu_set_show_numbers(). + * Since 2.10 +@@ -219,4 +220,5 @@ + // void gtk_recent_chooser_menu_set_show_numbers (GtkRecentChooserMenu *menu, gboolean show_numbers); + gtk_recent_chooser_menu_set_show_numbers(gtkRecentChooserMenu, showNumbers); + } ++ +/ + } +Index: src/gtk/Toolbar.d +=================================================================== +--- src/gtk/Toolbar.d (revision 797) ++++ src/gtk/Toolbar.d (working copy) +@@ -437,6 +437,7 @@ + gtk_toolbar_set_show_arrow(gtkToolbar, showArrow); + } + ++ /+ + /** + * Warning + * gtk_toolbar_set_orientation has been deprecated since version 2.16 and should not be used in newly-written code. Use gtk_orientable_set_orientation() instead. +@@ -449,6 +450,7 @@ + // void gtk_toolbar_set_orientation (GtkToolbar *toolbar, GtkOrientation orientation); + gtk_toolbar_set_orientation(gtkToolbar, orientation); + } ++ +/ + + /** + * Warning +@@ -486,6 +488,7 @@ + return gtk_toolbar_get_show_arrow(gtkToolbar); + } + ++ /+ + /** + * Warning + * gtk_toolbar_get_orientation has been deprecated since version 2.16 and should not be used in newly-written code. Use gtk_orientable_get_orientation() instead. +@@ -498,6 +501,7 @@ + // GtkOrientation gtk_toolbar_get_orientation (GtkToolbar *toolbar); + return gtk_toolbar_get_orientation(gtkToolbar); + } ++ +/ + + /** + * Retrieves whether the toolbar has text, icons, or both . See +@@ -516,11 +520,13 @@ + * Retrieves the icon size for the toolbar. See gtk_toolbar_set_icon_size(). + * Returns: the current icon size for the icons onthe toolbar.. type int + */ ++ /+ + public GtkIconSize getIconSize() + { + // GtkIconSize gtk_toolbar_get_icon_size (GtkToolbar *toolbar); + return gtk_toolbar_get_icon_size(gtkToolbar); + } ++ +/ + + /** + * Warning +@@ -542,11 +548,13 @@ + * Since 2.4 + * Returns: The relief style of buttons on toolbar. + */ ++ /+ + public GtkReliefStyle getReliefStyle() + { + // GtkReliefStyle gtk_toolbar_get_relief_style (GtkToolbar *toolbar); + return gtk_toolbar_get_relief_style(gtkToolbar); + } ++ +/ + + /** + * Warning +Index: src/gtk/TreeViewColumn.d +=================================================================== +--- src/gtk/TreeViewColumn.d (revision 797) ++++ src/gtk/TreeViewColumn.d (working copy) +@@ -218,6 +218,7 @@ + this(cast(GtkTreeViewColumn*) p); + } + ++ /+ + /** + * Packs the cell into the beginning of the column. If expand is FALSE, then + * the cell is allocated no more space than it needs. Any unused space is divided +@@ -254,6 +255,7 @@ + // void gtk_tree_view_column_clear (GtkTreeViewColumn *tree_column); + gtk_tree_view_column_clear(gtkTreeViewColumn); + } ++ +/ + + /** + * Warning +@@ -273,6 +275,7 @@ + return new ListG(cast(GList*) p); + } + ++ /+ + /** + * Adds an attribute mapping to the list in tree_column. The column is the + * column of the model to get a value from, and the attribute is the +@@ -320,6 +323,7 @@ + // void gtk_tree_view_column_clear_attributes (GtkTreeViewColumn *tree_column, GtkCellRenderer *cell_renderer); + gtk_tree_view_column_clear_attributes(gtkTreeViewColumn, (cellRenderer is null) ? null : cellRenderer.getCellRendererStruct()); + } ++ +/ + + /** + * Sets the spacing field of tree_column, which is the number of pixels to +Index: src/cairo/Context.d +=================================================================== +--- src/cairo/Context.d (revision 797) ++++ src/cairo/Context.d (working copy) +@@ -152,6 +152,10 @@ + // cairo_t* gdk_cairo_create (GdkDrawable *); + this(gdk_cairo_create(drawable.getDrawableStruct())); + } ++ ++ ~this () { ++ cairo_destroy(cairo); ++ } + + /** + * Sets the specified GdkColor as the source color of cr. +Index: src/gio/InetAddress.d +=================================================================== +--- src/gio/InetAddress.d (revision 797) ++++ src/gio/InetAddress.d (working copy) +@@ -205,7 +205,7 @@ + * Since 2.22 + * Returns: a representation of address as a string, which should befreed after use. + */ +- public string toString() ++ public override string toString() + { + // gchar * g_inet_address_to_string (GInetAddress *address); + return Str.toString(g_inet_address_to_string(gInetAddress)); +Index: src/gio/UnixInputStream.d +=================================================================== +--- src/gio/UnixInputStream.d (revision 797) ++++ src/gio/UnixInputStream.d (working copy) +@@ -171,9 +171,11 @@ + * Since 2.20 + * Returns: The file descriptor of stream + */ ++ /+ + public int getFd() + { + // gint g_unix_input_stream_get_fd (GUnixInputStream *stream); + return g_unix_input_stream_get_fd(gUnixInputStream); + } ++ +/ + } +Index: src/gio/UnixOutputStream.d +=================================================================== +--- src/gio/UnixOutputStream.d (revision 797) ++++ src/gio/UnixOutputStream.d (working copy) +@@ -171,9 +171,11 @@ + * Since 2.20 + * Returns: The file descriptor of stream + */ ++ /+ + public int getFd() + { + // gint g_unix_output_stream_get_fd (GUnixOutputStream *stream); + return g_unix_output_stream_get_fd(gUnixOutputStream); + } ++ +/ + } +Index: GNUmakefile +=================================================================== +--- GNUmakefile (revision 797) ++++ GNUmakefile (working copy) +@@ -1,6 +1,7 @@ + #makeAll.sh + SHELL=/bin/sh +-prefix=/usr/local ++#prefix=/usr/local ++prefix=/home/daveb/source/d/dmd + + OS=$(shell uname || uname -s) + ARCH=$(shell arch || uname -m) +@@ -19,7 +20,7 @@ + endif + + ifeq ("$(DC)","dmd") +- DCFLAGS=-O ++ DCFLAGS=-O -wi + output=-of$@ + else ifeq ("$(DC)","ldc") + DCFLAGS=-O +Index: demos/dsss.conf +=================================================================== +--- demos/dsss.conf (revision 797) ++++ demos/dsss.conf (working copy) +@@ -31,5 +31,6 @@ + #type = subdir + + #Please note that the gstreamer demos require Tango ++ + [gstreamer] + type = subdir +\ No newline at end of file +Index: demos/gtkD/TestWindow/TestWindow.d +=================================================================== +--- demos/gtkD/TestWindow/TestWindow.d (revision 797) ++++ demos/gtkD/TestWindow/TestWindow.d (working copy) +@@ -948,7 +948,8 @@ + gdkThreadsLeave(); + yield(); + } +- return 1; ++ //return 1; ++ assert(0); + } + } +