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);
+ 		}
+ 	}
+