Could you provide this patched version of yours publicly ? I would be
interested in it.
Here is the patch I apply. Note, that it is being applied to generated
code, rather than fixing the problem at the root. However I'm yet to
delve into running the code generator. As a linux user I believe I will
need to get htod running under wine...
Patch does the following:
* Adds "-w -wi" flags to dmd. I use these to build my own software so
gtkd must also compile correctly with these flags
* Adds several "override" qualifiers to appease dmd with said flags
enabled
* Small changes to compile with recent changes to dmd 2.052 (core.vararg)
* Fixes memory leak in cairo/Context (apparently there are more leaks
though, I fixed this one because it brings my program to its knees)
Index: GNUmakefile
===================================================================
--- GNUmakefile (revision 797)
+++ GNUmakefile (working copy)
@@ -19,7 +20,7 @@
endif
ifeq ("$(DC)","dmd")
- DCFLAGS=-O
+ DCFLAGS=-O -w -wi
output=-of$@
else ifeq ("$(DC)","ldc")
DCFLAGS=-O
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/TextBuffer.d
===================================================================
--- src/gtk/TextBuffer.d (revision 797)
+++ src/gtk/TextBuffer.d (working copy)
@@ -119,7 +119,7 @@
version(Tango) {
private import tango.core.Vararg;
} else {
- private import std.stdarg;
+ private import core.vararg;
}
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: 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);
}
}