View Issue Details

IDProjectCategoryView StatusLast Update
0000534ardourbugspublic2008-11-20 23:38
ReporterSimone Piunno Assigned Totaybin  
PriorityurgentSeveritymajorReproducibilityalways
Status closedResolutionfixed 
Summary0000534: gcc 3.4 uncovers real bugs
DescriptionSee attached patch, required to compile under gcc-3.4
In particular, see the line I've marked with a #warning
There's a call to the ::wrap() method, but this one doesn't exist in the code (it's commented out).

roentgen files # diffstat ardour-0.9_beta16-gcc34.patch
 gtk_ardour/ardour_dialog.h | 19 ++++++++-----
 gtk_ardour/audio_time_axis.h | 4 +-
 gtk_ardour/editor_ops.cc | 2 -
 gtk_ardour/editor_region_list.cc | 2 -
 gtk_ardour/mixer_strip.cc | 2 -
 gtk_ardour/route_params_ui.cc | 2 -
 gtk_ardour/route_ui.h | 41 +++++++++++++++---------------
 gtk_ardour/visual_time_axis.h | 26 ++++++++++---------
 libs/ardour/ardour/tempo.h | 4 ++
 libs/gtkmm/src/build_sources/proxy.h.m4 | 1
 libs/gtkmm/src/curve.gen_h | 2 +
 libs/gtkmm/src/gtk--/base.h | 8 +++--
 libs/gtkmm/src/list.gen_h | 4 +-
 libs/gtkmmext/pix.cc | 4 +-
 libs/pbd/pbd/stl_delete.h | 20 +++++++-------
 libs/sigc++/sigc++/class_slot.h | 16 +++++------
 libs/sigc++/sigc++/macros/class_slot.h.m4 | 2 -
 17 files changed, 86 insertions(+), 73 deletions(-)
Additional InformationI know this is a dupe, but Mantis doesn't let me reopen 0000517.
I'm not a C++ coder, so please forgive anything stupid I could have written, in particular moving methods from protected to public.
TagsNo tags attached.

Activities

2004-06-14 22:16

 

ardour-0.9_beta16-gcc34.patch (17,678 bytes)   
diff -ur ardour-0.9beta16.1.old/gtk_ardour/ardour_dialog.h ardour-0.9beta16.1/gtk_ardour/ardour_dialog.h
--- ardour-0.9beta16.1.old/gtk_ardour/ardour_dialog.h	2004-01-14 05:48:48.000000000 +0100
+++ ardour-0.9beta16.1/gtk_ardour/ardour_dialog.h	2004-06-15 00:05:03.038503488 +0200
@@ -47,6 +47,17 @@
 	void stop (int);
 	void set_keyboard_input (bool yn);
 	int  run_status();
+	gint wm_close_event (GdkEventAny *);
+	gint wm_doi_event (GdkEventAny *);
+  protected:
+	virtual void set_session (ARDOUR::Session* s) {
+		session = s;
+	}
+
+  public:
+	virtual void session_gone () {
+		set_session (0);
+	}
 
   protected:
 	gint enter_notify_event_impl (GdkEventCrossing*);
@@ -55,19 +66,11 @@
 
 	ARDOUR::Session *session;
 
-	virtual void set_session (ARDOUR::Session* s) {
-		session = s;
-	}
 
-	virtual void session_gone () {
-		set_session (0);
-	}
 
 	void quit ();
 	void wm_close();
 	void wm_doi ();
-	gint wm_close_event (GdkEventAny *);
-	gint wm_doi_event (GdkEventAny *);
 
   private:
 	int  _run_status;
diff -ur ardour-0.9beta16.1.old/gtk_ardour/audio_time_axis.h ardour-0.9beta16.1/gtk_ardour/audio_time_axis.h
--- ardour-0.9beta16.1.old/gtk_ardour/audio_time_axis.h	2004-05-18 03:52:09.000000000 +0200
+++ ardour-0.9beta16.1/gtk_ardour/audio_time_axis.h	2004-06-14 23:51:19.935634144 +0200
@@ -252,7 +252,7 @@
 	void show_all_automation ();
 	void show_existing_automation ();
 
-	friend struct RedirectAutomationNode {
+	struct RedirectAutomationNode {
 	    unsigned long     what;
 	    Gtk::CheckMenuItem* menu_item;
 	    AutomationTimeAxisView* view;
@@ -264,7 +264,7 @@
 	    ~RedirectAutomationNode ();
 	};
 
-	friend struct RedirectAutomationInfo {
+	struct RedirectAutomationInfo {
 	    ARDOUR::Redirect* redirect;
 	    bool valid;
 	    Gtk::Menu* menu;
diff -ur ardour-0.9beta16.1.old/gtk_ardour/editor_ops.cc ardour-0.9beta16.1/gtk_ardour/editor_ops.cc
--- ardour-0.9beta16.1.old/gtk_ardour/editor_ops.cc	2004-05-27 04:31:20.000000000 +0200
+++ ardour-0.9beta16.1/gtk_ardour/editor_ops.cc	2004-06-14 23:58:53.613664600 +0200
@@ -2704,7 +2704,7 @@
 void
 Editor::paste_named_selection (float times)
 {
-	using Gtk::CList_Helpers;
+	//using Gtk::CList_Helpers;
 	Gtk::CList_Helpers::SelectionList& selected = named_selection_display.selection();
 	TrackSelection::iterator i;
 
diff -ur ardour-0.9beta16.1.old/gtk_ardour/editor_region_list.cc ardour-0.9beta16.1/gtk_ardour/editor_region_list.cc
--- ardour-0.9beta16.1.old/gtk_ardour/editor_region_list.cc	2004-03-10 06:14:29.000000000 +0100
+++ ardour-0.9beta16.1/gtk_ardour/editor_region_list.cc	2004-06-14 23:59:18.373900472 +0200
@@ -195,7 +195,7 @@
 void
 Editor::add_audio_region_to_region_display (AudioRegion *region)
 {
-	using Gtk::CTree_Helpers;
+	//using Gtk::CTree_Helpers;
 
 	vector<const char*> item;
 	Gtk::CTree_Helpers::RowList::iterator i;
diff -ur ardour-0.9beta16.1.old/gtk_ardour/mixer_strip.cc ardour-0.9beta16.1/gtk_ardour/mixer_strip.cc
--- ardour-0.9beta16.1.old/gtk_ardour/mixer_strip.cc	2004-05-19 16:30:28.000000000 +0200
+++ ardour-0.9beta16.1/gtk_ardour/mixer_strip.cc	2004-06-15 00:02:47.023180960 +0200
@@ -1830,7 +1830,7 @@
 gint
 MixerStrip::compute_redirect_sort_keys ()
 {
-	using Gtk::CList_Helpers;
+	//using Gtk::CList_Helpers;
 	CList_Helpers::RowList::iterator i;
 	unsigned long sort_key;
 
diff -ur ardour-0.9beta16.1.old/gtk_ardour/route_params_ui.cc ardour-0.9beta16.1/gtk_ardour/route_params_ui.cc
--- ardour-0.9beta16.1.old/gtk_ardour/route_params_ui.cc	2004-05-08 14:52:09.000000000 +0200
+++ ardour-0.9beta16.1/gtk_ardour/route_params_ui.cc	2004-06-15 00:05:19.435010840 +0200
@@ -1037,7 +1037,7 @@
 gint
 RouteParams_UI::compute_redirect_sort_keys ()
 {
-	using Gtk::CList_Helpers;
+	//using Gtk::CList_Helpers;
 	CList_Helpers::RowList::iterator i;
 	unsigned long sort_key;
 
diff -ur ardour-0.9beta16.1.old/gtk_ardour/route_ui.h ardour-0.9beta16.1/gtk_ardour/route_ui.h
--- ardour-0.9beta16.1.old/gtk_ardour/route_ui.h	2004-01-14 05:48:49.000000000 +0100
+++ ardour-0.9beta16.1/gtk_ardour/route_ui.h	2004-06-15 00:02:21.368081128 +0200
@@ -48,6 +48,27 @@
 
 	string name() const;
 	
+	void solo_changed(void*);
+	void mute_changed(void*);
+	void route_rec_enable_changed(void*);
+	void session_rec_enable_changed();
+
+	void toggle_mute_menu(ARDOUR::mute_type, Gtk::CheckMenuItem*);
+	void pre_fader_toggle(void*, Gtk::CheckMenuItem*);
+	
+	gint mute_press(GdkEventButton*);
+	gint mute_release(GdkEventButton*);
+	gint solo_press(GdkEventButton*);
+	gint solo_release(GdkEventButton*);
+	gint rec_enable_press(GdkEventButton*);
+
+	void remove_this_route ();
+	void route_rename();
+	virtual void name_changed (void *src);
+	void disconnect_input ();
+	void disconnect_output ();
+	void toggle_route_active ();
+
   protected:
 	ARDOUR::Route& _route;
 
@@ -68,19 +89,7 @@
 	void ensure_xml_node ();
 
 	
-	gint mute_press(GdkEventButton*);
-	gint mute_release(GdkEventButton*);
-	gint solo_press(GdkEventButton*);
-	gint solo_release(GdkEventButton*);
-	gint rec_enable_press(GdkEventButton*);
-
-	void solo_changed(void*);
-	void mute_changed(void*);
-	void route_rec_enable_changed(void*);
-	void session_rec_enable_changed();
 
-	void toggle_mute_menu(ARDOUR::mute_type, Gtk::CheckMenuItem*);
-	void pre_fader_toggle(void*, Gtk::CheckMenuItem*);
 	void post_fader_toggle(void*, Gtk::CheckMenuItem*);
 	void control_outs_toggle(void*, Gtk::CheckMenuItem*);
 	void main_outs_toggle(void*, Gtk::CheckMenuItem*);
@@ -98,23 +107,15 @@
 
 	void rec_enable_button_blink (bool onoff, ARDOUR::DiskStream *, Gtk::Widget *w);
 	
-	void remove_this_route ();
 	static gint idle_remove_this_route (RouteUI *);
 
-	void route_rename();
-	
-	virtual void name_changed (void *src);
 	void route_removed ();
 
 	static gint okay_gplusplus_cannot_do_complex_templates (RouteUI *rui);
 
 	Gtk::CheckMenuItem *route_active_menu_item;
-	void toggle_route_active ();
 	void route_active_changed ();
 
-	void disconnect_input ();
-	void disconnect_output ();
-
 	void update_rec_display ();
 	void update_mute_display ();
 	void update_solo_display ();
diff -ur ardour-0.9beta16.1.old/gtk_ardour/visual_time_axis.h ardour-0.9beta16.1/gtk_ardour/visual_time_axis.h
--- ardour-0.9beta16.1.old/gtk_ardour/visual_time_axis.h	2004-01-29 05:56:46.000000000 +0100
+++ ardour-0.9beta16.1/gtk_ardour/visual_time_axis.h	2004-06-15 00:07:16.332239760 +0200
@@ -134,7 +134,21 @@
 		 * Emitted when this time axis has been selected for removal
 		 */
 		//SigC::Signal2<void,std::string,void*> VisualTimeAxisRemoved ;
+		
+		/**
+		 * Handles the Removal of this VisualTimeAxis
+		 *
+		 * @param src the identity of the object that initiated the change
+		 */
+		virtual void remove_this_time_axis(void* src) ;
 
+		/**
+		 * Construct a new prompt to receive a new name for this TimeAxis
+		 *
+		 * @see finish_time_axis_rename()
+		 */
+		void start_time_axis_rename() ;
+		
 	protected:
 		//---------------------------------------------------------------------------------------//
 		// Constructor / Desctructor
@@ -153,12 +167,6 @@
 		//---------------------------------------------------------------------------------------//
 		// Handle time axis removal
 		
-		/**
-		 * Handles the Removal of this VisualTimeAxis
-		 *
-		 * @param src the identity of the object that initiated the change
-		 */
-		virtual void remove_this_time_axis(void* src) ;
 		
 		/**
 		 * Callback used to remove this time axis during the gtk idle loop
@@ -210,12 +218,6 @@
 		//---------------------------------------------------------------------------------------//
 		// Handle TimeAxis rename
 		
-		/**
-		 * Construct a new prompt to receive a new name for this TimeAxis
-		 *
-		 * @see finish_time_axis_rename()
-		 */
-		void start_time_axis_rename() ;
 		
 		/**
 		 * Handles the new name for this TimeAxis from the name prompt
diff -ur ardour-0.9beta16.1.old/libs/ardour/ardour/tempo.h ardour-0.9beta16.1/libs/ardour/ardour/tempo.h
--- ardour-0.9beta16.1.old/libs/ardour/ardour/tempo.h	2003-11-21 05:47:45.000000000 +0100
+++ ardour-0.9beta16.1/libs/ardour/ardour/tempo.h	2004-06-14 22:52:46.668731896 +0200
@@ -178,11 +178,13 @@
 	};
 
 	typedef vector<BBTPoint> BBTPointList;
-	
+
+#if 0
 	template<class T> void apply_with_points (T& obj, void (T::*method)(BBTPointList&)) {
 		LockMonitor lm (lock, __LINE__, __FILE__);
 		(obj.*method)(bbt_points);
 	}
+#endif
 	
 	
 	template<class T> void apply_with_metrics (T& obj, void (T::*method)(const Metrics&)) {
diff -ur ardour-0.9beta16.1.old/libs/gtkmm/src/build_sources/proxy.h.m4 ardour-0.9beta16.1/libs/gtkmm/src/build_sources/proxy.h.m4
--- ardour-0.9beta16.1.old/libs/gtkmm/src/build_sources/proxy.h.m4	2003-06-17 05:49:19.000000000 +0200
+++ ardour-0.9beta16.1/libs/gtkmm/src/build_sources/proxy.h.m4	2004-06-14 22:56:31.354574456 +0200
@@ -167,6 +167,7 @@
         }
 
     public:
+      using [ProxySignal]NUM($1)<LIST([R],1,ARG_TYPE($1),[$1],[Obj,gObj,index],1)>::obj;
       SlotType slot()
         {
           SigC::SlotData* tmp=manage(new SigC::SlotData());
diff -ur ardour-0.9beta16.1.old/libs/gtkmm/src/curve.gen_h ardour-0.9beta16.1/libs/gtkmm/src/curve.gen_h
--- ardour-0.9beta16.1.old/libs/gtkmm/src/curve.gen_h	2003-06-17 05:48:57.000000000 +0200
+++ ardour-0.9beta16.1/libs/gtkmm/src/curve.gen_h	2004-06-14 23:16:01.610668488 +0200
@@ -136,6 +136,7 @@
     void gtk_curve_get_vector(GtkCurve*,int,gfloat*),
     void get_vector(int num,gfloat* data));
 
+#if 0
   // For containers       
   template <class Iterator>
   int get_vector(Iterator b,Iterator e) const
@@ -150,6 +151,7 @@
       delete [] data;
       return i;
     };
+#endif
 
   //void gtk_curve_set_vector(GtkCurve*,int,gfloat[]);
   //: Sets the vector of points on the curve.
diff -ur ardour-0.9beta16.1.old/libs/gtkmm/src/gtk--/base.h ardour-0.9beta16.1/libs/gtkmm/src/gtk--/base.h
--- ardour-0.9beta16.1.old/libs/gtkmm/src/gtk--/base.h	2003-06-17 05:49:27.000000000 +0200
+++ ardour-0.9beta16.1/libs/gtkmm/src/gtk--/base.h	2004-06-14 23:38:48.860814872 +0200
@@ -124,13 +124,13 @@
   }
 
 // interface to gtk--
-/* 
+#if 0
 template <class C>
 typename Wrap<C>::CppType* wrap(C* o)
   {
     return dynamic_cast<typename Wrap<C>::CppType*>(wrap_auto((GtkObject*)(o)));
   }
-*/
+#endif
 
 /********************************************************************/
 
@@ -482,7 +482,9 @@
   value_type operator*() const
   {
     if (node && node->data)
-      return Gtk::wrap(static_cast<impl*>((*node).data));
+      assert("This is not implemented!" == NULL);
+      //return Gtk::wrap(static_cast<impl*>((*node).data));
+#warning Please FIXME
     return 0;
   }
 
diff -ur ardour-0.9beta16.1.old/libs/gtkmm/src/list.gen_h ardour-0.9beta16.1/libs/gtkmm/src/list.gen_h
--- ardour-0.9beta16.1.old/libs/gtkmm/src/list.gen_h	2003-06-17 05:49:00.000000000 +0200
+++ ardour-0.9beta16.1/libs/gtkmm/src/list.gen_h	2004-06-14 23:37:27.607167304 +0200
@@ -87,8 +87,8 @@
   //- items: The items.
   //- position: The position to insert items, starting at 0.
   WRAP_METHOD(
-    void gtk_list_insert_items(GtkList*,GList*,gint),
-    void insert_items(GList *items, gint position));
+   void gtk_list_insert_items(GtkList*,GList*,gint),
+   void insert_items(GList *items, gint position));
 
   //: Adds items to the end of the list.
   //- items: The items.
diff -ur ardour-0.9beta16.1.old/libs/gtkmmext/pix.cc ardour-0.9beta16.1/libs/gtkmmext/pix.cc
--- ardour-0.9beta16.1.old/libs/gtkmmext/pix.cc	2003-06-17 05:50:32.000000000 +0200
+++ ardour-0.9beta16.1/libs/gtkmmext/pix.cc	2004-06-14 23:43:14.341455680 +0200
@@ -36,8 +36,8 @@
 
 namespace std
 {
-	struct less<string *> {
-	    bool operator()(string *s1, string *s2) const {
+	template <class T> struct less<T*> {
+	    bool operator()(T *s1, T *s2) const {
 		    return *s1 < *s2;
 	    }
 	};
diff -ur ardour-0.9beta16.1.old/libs/pbd/pbd/stl_delete.h ardour-0.9beta16.1/libs/pbd/pbd/stl_delete.h
--- ardour-0.9beta16.1.old/libs/pbd/pbd/stl_delete.h	2004-05-21 04:43:47.000000000 +0200
+++ ardour-0.9beta16.1/libs/pbd/pbd/stl_delete.h	2004-06-14 22:49:16.742645512 +0200
@@ -24,7 +24,7 @@
 /* To actually use any of these deletion functions, you need to
    first include the revelant container type header.
 */
-#if defined(_CPP_VECTOR) || defined(__SGI_STL_VECTOR)
+#if defined(_CPP_VECTOR) || defined(_GLIBCXX_VECTOR) || defined(__SGI_STL_VECTOR)
 template<class T> void vector_delete (std::vector<T *> *vec) 
 {
 	typename std::vector<T *>::iterator i;
@@ -34,9 +34,9 @@
 	}
 	vec->clear ();
 }
-#endif // _CPP_VECTOR || __SGI_STL_VECTOR
+#endif // _CPP_VECTOR || _GLIBCXX_VECTOR || __SGI_STL_VECTOR
 
-#if defined(_CPP_MAP) || defined(__SGI_STL_MAP)
+#if defined(_CPP_MAP) || defined(_GLIBCXX_MAP) || defined(__SGI_STL_MAP)
 template<class K, class T> void map_delete (std::map<K, T *> *m) 
 {
 	typename std::map<K, T *>::iterator i;
@@ -46,9 +46,9 @@
 	}
 	m->clear ();
 }
-#endif // _CPP_MAP || __SGI_STL_MAP
+#endif // _CPP_MAP || _GLIBCXX_MAP || __SGI_STL_MAP
 
-#if defined(_CPP_LIST) || defined(__SGI_STL_LIST)
+#if defined(_CPP_LIST) || defined(_GLIBCXX_LIST) || defined(__SGI_STL_LIST)
 template<class T> void list_delete (std::list<T *> *l) 
 {
 	typename std::list<T *>::iterator i;
@@ -59,9 +59,9 @@
 
 	l->clear ();
 }
-#endif // _CPP_LIST || __SGI_STL_LIST
+#endif // _CPP_LIST || _GLIBCXX_LIST || __SGI_STL_LIST
 
-#if defined(_CPP_SLIST) || defined(__SGI_STL_SLIST)
+#if defined(_CPP_SLIST) || defined(_GLIBCXX_SLIST) || defined(__SGI_STL_SLIST)
 template<class T> void slist_delete (std::slist<T *> *l) 
 {
 	typename std::slist<T *>::iterator i;
@@ -72,9 +72,9 @@
 
 	l->clear ();
 }
-#endif // _CPP_SLIST || __SGI_STL_SLIST
+#endif // _CPP_SLIST || _GLIBCXX_SLIST || __SGI_STL_SLIST
 
-#if defined(_CPP_SET) || defined(__SGI_STL_SET)
+#if defined(_CPP_SET) || defined(_GLIBCXX_SET) || defined(__SGI_STL_SET)
 template<class T> void set_delete (std::set<T *> *sset) 
 {
 	typename std::set<T *>::iterator i;
@@ -84,6 +84,6 @@
 	}
 	sset->erase (sset->begin(), sset->end());
 }
-#endif // _CPP_SET || __SGI_STL_SET
+#endif // _CPP_SET || _GLIBCXX_SET || __SGI_STL_SET
 
 #endif // __libmisc_stl_delete_h__
diff -ur ardour-0.9beta16.1.old/libs/sigc++/sigc++/class_slot.h ardour-0.9beta16.1/libs/sigc++/sigc++/class_slot.h
--- ardour-0.9beta16.1.old/libs/sigc++/sigc++/class_slot.h	2003-06-17 05:56:27.000000000 +0200
+++ ardour-0.9beta16.1/libs/sigc++/sigc++/class_slot.h	2004-06-14 22:45:45.835708240 +0200
@@ -54,7 +54,7 @@
       if (!obj) return 0;
       SlotData* tmp=manage(new SlotData());
       CallData &data=reinterpret_cast<CallData&>(tmp->data_);
-      data.callback=&callback;
+      data.callback=&ObjectSlot0_<R,Obj>::callback;
       data.obj=&obj;
       data.func=(Func)func;
       return tmp;
@@ -90,7 +90,7 @@
       if (!obj) return 0;
       SlotData* tmp=manage(new SlotData());
       CallData &data=reinterpret_cast<CallData&>(tmp->data_);
-      data.callback=&callback;
+      data.callback=&ObjectSlot1_<R,P1,Obj>::callback;
       data.obj=&obj;
       data.func=(Func)func;
       return tmp;
@@ -126,7 +126,7 @@
       if (!obj) return 0;
       SlotData* tmp=manage(new SlotData());
       CallData &data=reinterpret_cast<CallData&>(tmp->data_);
-      data.callback=&callback;
+      data.callback=&ObjectSlot2_<R,P1,P2,Obj>::callback;
       data.obj=&obj;
       data.func=(Func)func;
       return tmp;
@@ -162,7 +162,7 @@
       if (!obj) return 0;
       SlotData* tmp=manage(new SlotData());
       CallData &data=reinterpret_cast<CallData&>(tmp->data_);
-      data.callback=&callback;
+      data.callback=&ObjectSlot3_<R,P1,P2,P3,Obj>::callback;
       data.obj=&obj;
       data.func=(Func)func;
       return tmp;
@@ -198,7 +198,7 @@
       if (!obj) return 0;
       SlotData* tmp=manage(new SlotData());
       CallData &data=reinterpret_cast<CallData&>(tmp->data_);
-      data.callback=&callback;
+      data.callback=&ObjectSlot4_<R,P1,P2,P3,P4,Obj>::callback;
       data.obj=&obj;
       data.func=(Func)func;
       return tmp;
@@ -234,7 +234,7 @@
       if (!obj) return 0;
       SlotData* tmp=manage(new SlotData());
       CallData &data=reinterpret_cast<CallData&>(tmp->data_);
-      data.callback=&callback;
+      data.callback=&ObjectSlot5_<R,P1,P2,P3,P4,P5,Obj>::callback;
       data.obj=&obj;
       data.func=(Func)func;
       return tmp;
@@ -270,7 +270,7 @@
       if (!obj) return 0;
       SlotData* tmp=manage(new SlotData());
       CallData &data=reinterpret_cast<CallData&>(tmp->data_);
-      data.callback=&callback;
+      data.callback=&ObjectSlot6_<R,P1,P2,P3,P4,P5,P6,Obj>::callback;
       data.obj=&obj;
       data.func=(Func)func;
       return tmp;
@@ -306,7 +306,7 @@
       if (!obj) return 0;
       SlotData* tmp=manage(new SlotData());
       CallData &data=reinterpret_cast<CallData&>(tmp->data_);
-      data.callback=&callback;
+      data.callback=&ObjectSlot7_<R,P1,P2,P3,P4,P5,P6,P7,Obj>::callback;
       data.obj=&obj;
       data.func=(Func)func;
       return tmp;
diff -ur ardour-0.9beta16.1.old/libs/sigc++/sigc++/macros/class_slot.h.m4 ardour-0.9beta16.1/libs/sigc++/sigc++/macros/class_slot.h.m4
--- ardour-0.9beta16.1.old/libs/sigc++/sigc++/macros/class_slot.h.m4	2003-06-17 05:51:10.000000000 +0200
+++ ardour-0.9beta16.1/libs/sigc++/sigc++/macros/class_slot.h.m4	2004-06-14 22:45:39.906609600 +0200
@@ -77,7 +77,7 @@
       if (!obj) return 0;
       SlotData* tmp=manage(new SlotData());
       CallData &data=reinterpret_cast<CallData&>(tmp->data_);
-      data.callback=&callback;
+      data.callback=&[ObjectSlot]NUM($1)_<LIST(R,1,ARG_TYPE($1),[$1],Obj,1)>::callback;
       data.obj=&obj;
       data.func=(Func)func;
       return tmp;
ardour-0.9_beta16-gcc34.patch (17,678 bytes)   

paul

2004-06-15 00:00

administrator   ~0001019

Thanks for your work. However, I can't accept a 17kB patch in one shot.

First: we are not really interested in patching gtkmm. We will be moving on to GTK2 in the not too distant future.

Second: the same goes for libsigc++

Third: moving functions between public + protected requires explicit justification for every method and/or member moved

Fourth: split your patch into much smaller pieces, send them 1 by 1 to ardour-dev, and we will be happy to consider them.

Again, thanks for the work. I don't want to pour cold water on it, just get it in a way that we can realistically assess it.

paul

2004-06-30 12:41

administrator   ~0001150

We would still very much like to get your patches!

Simone Piunno

2004-06-30 18:07

reporter   ~0001151

Sorry for this late answer, I started to decompose previous diff in small trivial patches and found that some of my fixes were completely wrong, therefore I spent a good amount of time trying to find the correct solution but I have still unsolved issues.
Again, I'm not a C++ developer and the gtk+ code is really hard to understand for me.

Anyway, I'm attaching some really small and trivial (I believe) fixes, and I'll provide more when I can.

2004-06-30 18:07

 

01_stl_macros.diff (2,467 bytes)   
This is required on gcc-3.4 because some STL macros have changed name
and without this patch you get "'vector_delete' undeclared".

diff -ur ardour-0.9beta16.1.old/libs/pbd/pbd/stl_delete.h ardour-0.9beta16.1/libs/pbd/pbd/stl_delete.h
--- ardour-0.9beta16.1.old/libs/pbd/pbd/stl_delete.h	2004-05-21 04:43:47.000000000 +0200
+++ ardour-0.9beta16.1/libs/pbd/pbd/stl_delete.h	2004-06-14 22:49:16.742645512 +0200
@@ -24,7 +24,7 @@
 /* To actually use any of these deletion functions, you need to
    first include the revelant container type header.
 */
-#if defined(_CPP_VECTOR) || defined(__SGI_STL_VECTOR)
+#if defined(_CPP_VECTOR) || defined(_GLIBCXX_VECTOR) || defined(__SGI_STL_VECTOR)
 template<class T> void vector_delete (std::vector<T *> *vec) 
 {
 	typename std::vector<T *>::iterator i;
@@ -34,9 +34,9 @@
 	}
 	vec->clear ();
 }
-#endif // _CPP_VECTOR || __SGI_STL_VECTOR
+#endif // _CPP_VECTOR || _GLIBCXX_VECTOR || __SGI_STL_VECTOR
 
-#if defined(_CPP_MAP) || defined(__SGI_STL_MAP)
+#if defined(_CPP_MAP) || defined(_GLIBCXX_MAP) || defined(__SGI_STL_MAP)
 template<class K, class T> void map_delete (std::map<K, T *> *m) 
 {
 	typename std::map<K, T *>::iterator i;
@@ -46,9 +46,9 @@
 	}
 	m->clear ();
 }
-#endif // _CPP_MAP || __SGI_STL_MAP
+#endif // _CPP_MAP || _GLIBCXX_MAP || __SGI_STL_MAP
 
-#if defined(_CPP_LIST) || defined(__SGI_STL_LIST)
+#if defined(_CPP_LIST) || defined(_GLIBCXX_LIST) || defined(__SGI_STL_LIST)
 template<class T> void list_delete (std::list<T *> *l) 
 {
 	typename std::list<T *>::iterator i;
@@ -59,9 +59,9 @@
 
 	l->clear ();
 }
-#endif // _CPP_LIST || __SGI_STL_LIST
+#endif // _CPP_LIST || _GLIBCXX_LIST || __SGI_STL_LIST
 
-#if defined(_CPP_SLIST) || defined(__SGI_STL_SLIST)
+#if defined(_CPP_SLIST) || defined(_GLIBCXX_SLIST) || defined(__SGI_STL_SLIST)
 template<class T> void slist_delete (std::slist<T *> *l) 
 {
 	typename std::slist<T *>::iterator i;
@@ -72,9 +72,9 @@
 
 	l->clear ();
 }
-#endif // _CPP_SLIST || __SGI_STL_SLIST
+#endif // _CPP_SLIST || _GLIBCXX_SLIST || __SGI_STL_SLIST
 
-#if defined(_CPP_SET) || defined(__SGI_STL_SET)
+#if defined(_CPP_SET) || defined(_GLIBCXX_SET) || defined(__SGI_STL_SET)
 template<class T> void set_delete (std::set<T *> *sset) 
 {
 	typename std::set<T *>::iterator i;
@@ -84,6 +84,6 @@
 	}
 	sset->erase (sset->begin(), sset->end());
 }
-#endif // _CPP_SET || __SGI_STL_SET
+#endif // _CPP_SET || _GLIBCXX_SET || __SGI_STL_SET
 
 #endif // __libmisc_stl_delete_h__
01_stl_macros.diff (2,467 bytes)   

2004-06-30 18:08

 

02_sigc++.diff (1,033 bytes)   
This is required because in gcc-3.4 derived templates must reference
base template attributes explicitly.  Error example:

class_slot.h: In static member function `static SigC::SlotData* SigC::ClassSlot0_<R, Obj>::create(Obj*, typename SigC::ObjectSlot0_<R, Obj>::InFunc)':
class_slot.h:57: error: `callback' undeclared (first use this function)

diff -ur ardour-0.9beta16.1.old/libs/sigc++/sigc++/macros/class_slot.h.m4 ardour-0.9beta16.1/libs/sigc++/sigc++/macros/class_slot.h.m4
--- ardour-0.9beta16.1.old/libs/sigc++/sigc++/macros/class_slot.h.m4	2003-06-17 05:51:10.000000000 +0200
+++ ardour-0.9beta16.1/libs/sigc++/sigc++/macros/class_slot.h.m4	2004-06-14 22:45:39.906609600 +0200
@@ -77,7 +77,7 @@
       if (!obj) return 0;
       SlotData* tmp=manage(new SlotData());
       CallData &data=reinterpret_cast<CallData&>(tmp->data_);
-      data.callback=&callback;
+      data.callback=&[ObjectSlot]NUM($1)_<LIST(R,1,ARG_TYPE($1),[$1],Obj,1)>::callback;
       data.obj=&obj;
       data.func=(Func)func;
       return tmp;
02_sigc++.diff (1,033 bytes)   

2004-06-30 18:08

 

03_apply_with_points_tempo.h.diff (1,284 bytes)   
The apply_with_points method is not used anywhere.
The bbt_points attribute referenced inside doesn't exist anywhere in the 
tree, so this must be non-working dead code.
gcc-3.4 is smarter and detects this as bad code, so I had to comment
it out.  Maybe you know what this code was meant to do, in this case
maybe you want to fix it instead of removing it.

This is what gcc complains:

./ardour/tempo.h: In member function `void ARDOUR::TempoMap::apply_with_points(T&, void (T::*)(std::vector<ARDOUR::TempoMap::BBTPoint, std::allocator<ARDOUR::TempoMap::BBTPoint> >&))':
./ardour/tempo.h:184: error: `bbt_points' undeclared (first use this function)


diff -ur ardour-0.9beta16.1.old/libs/ardour/ardour/tempo.h ardour-0.9beta16.1/libs/ardour/ardour/tempo.h
--- ardour-0.9beta16.1.old/libs/ardour/ardour/tempo.h	2003-11-21 05:47:45.000000000 +0100
+++ ardour-0.9beta16.1/libs/ardour/ardour/tempo.h	2004-06-14 22:52:46.668731896 +0200
@@ -178,11 +178,13 @@
 	};
 
 	typedef vector<BBTPoint> BBTPointList;
+#if 0
 	template<class T> void apply_with_points (T& obj, void (T::*method)(BBTPointList&)) {
 		LockMonitor lm (lock, __LINE__, __FILE__);
 		(obj.*method)(bbt_points);
 	}
+#endif
 	
 	
 	template<class T> void apply_with_metrics (T& obj, void (T::*method)(const Metrics&)) {

2004-06-30 18:09

 

04_proxy_using.diff (832 bytes)   
obj must be explicitly imported in the local namespace, to avoid a lot of errors 
like this:

proxy.h: In member function `SigC::Slot0<R> Gtk::EmitProxySignal0<R, Obj, gObj, index, emit_func>::slot()':
proxy.h:153: error: `obj' undeclared (first use this function)


diff -ur ardour-0.9beta16.1.old/libs/gtkmm/src/build_sources/proxy.h.m4 ardour-0.9beta16.1/libs/gtkmm/src/build_sources/proxy.h.m4
--- ardour-0.9beta16.1.old/libs/gtkmm/src/build_sources/proxy.h.m4	2003-06-17 05:49:19.000000000 +0200
+++ ardour-0.9beta16.1/libs/gtkmm/src/build_sources/proxy.h.m4	2004-06-14 22:56:31.354574456 +0200
@@ -167,6 +167,7 @@
         }
 
     public:
+      using [ProxySignal]NUM($1)<LIST([R],1,ARG_TYPE($1),[$1],[Obj,gObj,index],1)>::obj;
       SlotType slot()
         {
           SigC::SlotData* tmp=manage(new SigC::SlotData());
04_proxy_using.diff (832 bytes)   

2004-06-30 18:09

 

07_pix_explicit_specialization.diff (396 bytes)   
pix.cc:39: error: an explicit specialization must be preceded by 'template <>'

--- libs/gtkmmext/pix.cc.orig	2004-06-16 22:34:26.686891536 +0200
+++ libs/gtkmmext/pix.cc	2004-06-16 22:43:25.130035736 +0200
@@ -36,7 +36,7 @@
 
 namespace std
 {
-	struct less<string *> {
+	template<> struct less<string *> {
 	    bool operator()(string *s1, string *s2) const {
 		    return *s1 < *s2;
 	    }

2004-07-11 23:54

 

P0_simone.diff (4,666 bytes)   
diff -ur ardour-0.9beta17.1.orig/libs/ardour/ardour/tempo.h ardour-0.9beta17.1/libs/ardour/ardour/tempo.h
--- ardour-0.9beta17.1.orig/libs/ardour/ardour/tempo.h	2004-07-11 19:30:30.011186608 -0400
+++ ardour-0.9beta17.1/libs/ardour/ardour/tempo.h	2004-07-11 19:51:59.657130624 -0400
@@ -179,10 +179,12 @@
 
 	typedef vector<BBTPoint> BBTPointList;
 	
+#if 0
 	template<class T> void apply_with_points (T& obj, void (T::*method)(BBTPointList&)) {
 		LockMonitor lm (lock, __LINE__, __FILE__);
 		(obj.*method)(bbt_points);
 	}
+#endif
 	
 	
 	template<class T> void apply_with_metrics (T& obj, void (T::*method)(const Metrics&)) {
diff -ur ardour-0.9beta17.1.orig/libs/gtkmm/src/build_sources/proxy.h.m4 ardour-0.9beta17.1/libs/gtkmm/src/build_sources/proxy.h.m4
--- ardour-0.9beta17.1.orig/libs/gtkmm/src/build_sources/proxy.h.m4	2004-07-11 19:30:29.960194360 -0400
+++ ardour-0.9beta17.1/libs/gtkmm/src/build_sources/proxy.h.m4	2004-07-11 19:48:24.965768672 -0400
@@ -167,6 +167,7 @@
         }
 
     public:
+      using [ProxySignal]NUM($1)<LIST([R],1,ARG_TYPE($1),[$1],[Obj,gObj,index],1)>::obj;
       SlotType slot()
         {
           SigC::SlotData* tmp=manage(new SigC::SlotData());
diff -ur ardour-0.9beta17.1.orig/libs/gtkmmext/pix.cc ardour-0.9beta17.1/libs/gtkmmext/pix.cc
--- ardour-0.9beta17.1.orig/libs/gtkmmext/pix.cc	2004-07-11 19:30:30.054180072 -0400
+++ ardour-0.9beta17.1/libs/gtkmmext/pix.cc	2004-07-11 19:48:34.850266000 -0400
@@ -36,7 +36,7 @@
 
 namespace std
 {
-	struct less<string *> {
+	template<> struct less<string *> {
 	    bool operator()(string *s1, string *s2) const {
 		    return *s1 < *s2;
 	    }
diff -ur ardour-0.9beta17.1.orig/libs/pbd/pbd/stl_delete.h ardour-0.9beta17.1/libs/pbd/pbd/stl_delete.h
--- ardour-0.9beta17.1.orig/libs/pbd/pbd/stl_delete.h	2004-07-11 19:30:29.946196488 -0400
+++ ardour-0.9beta17.1/libs/pbd/pbd/stl_delete.h	2004-07-11 19:48:12.508662440 -0400
@@ -24,7 +24,7 @@
 /* To actually use any of these deletion functions, you need to
    first include the revelant container type header.
 */
-#if defined(_CPP_VECTOR) || defined(__SGI_STL_VECTOR)
+#if defined(_CPP_VECTOR) || defined(_GLIBCXX_VECTOR) || defined(__SGI_STL_VECTOR)
 template<class T> void vector_delete (std::vector<T *> *vec) 
 {
 	typename std::vector<T *>::iterator i;
@@ -34,9 +34,9 @@
 	}
 	vec->clear ();
 }
-#endif // _CPP_VECTOR || __SGI_STL_VECTOR
+#endif // _CPP_VECTOR || _GLIBCXX_VECTOR || __SGI_STL_VECTOR
 
-#if defined(_CPP_MAP) || defined(__SGI_STL_MAP)
+#if defined(_CPP_MAP) || defined(_GLIBCXX_MAP) || defined(__SGI_STL_MAP)
 template<class K, class T> void map_delete (std::map<K, T *> *m) 
 {
 	typename std::map<K, T *>::iterator i;
@@ -46,9 +46,9 @@
 	}
 	m->clear ();
 }
-#endif // _CPP_MAP || __SGI_STL_MAP
+#endif // _CPP_MAP || _GLIBCXX_MAP || __SGI_STL_MAP
 
-#if defined(_CPP_LIST) || defined(__SGI_STL_LIST)
+#if defined(_CPP_LIST) || defined(_GLIBCXX_LIST) || defined(__SGI_STL_LIST)
 template<class T> void list_delete (std::list<T *> *l) 
 {
 	typename std::list<T *>::iterator i;
@@ -59,9 +59,9 @@
 
 	l->clear ();
 }
-#endif // _CPP_LIST || __SGI_STL_LIST
+#endif // _CPP_LIST || _GLIBCXX_LIST || __SGI_STL_LIST
 
-#if defined(_CPP_SLIST) || defined(__SGI_STL_SLIST)
+#if defined(_CPP_SLIST) || defined(_GLIBCXX_SLIST) || defined(__SGI_STL_SLIST)
 template<class T> void slist_delete (std::slist<T *> *l) 
 {
 	typename std::slist<T *>::iterator i;
@@ -72,9 +72,9 @@
 
 	l->clear ();
 }
-#endif // _CPP_SLIST || __SGI_STL_SLIST
+#endif // _CPP_SLIST || _GLIBCXX_SLIST || __SGI_STL_SLIST
 
-#if defined(_CPP_SET) || defined(__SGI_STL_SET)
+#if defined(_CPP_SET) || defined(_GLIBCXX_SET) || defined(__SGI_STL_SET)
 template<class T> void set_delete (std::set<T *> *sset) 
 {
 	typename std::set<T *>::iterator i;
@@ -84,6 +84,6 @@
 	}
 	sset->erase (sset->begin(), sset->end());
 }
-#endif // _CPP_SET || __SGI_STL_SET
+#endif // _CPP_SET || _GLIBCXX_SET || __SGI_STL_SET
 
 #endif // __libmisc_stl_delete_h__
diff -ur ardour-0.9beta17.1.orig/libs/sigc++/sigc++/macros/class_slot.h.m4 ardour-0.9beta17.1/libs/sigc++/sigc++/macros/class_slot.h.m4
--- ardour-0.9beta17.1.orig/libs/sigc++/sigc++/macros/class_slot.h.m4	2004-07-11 19:30:30.075176880 -0400
+++ ardour-0.9beta17.1/libs/sigc++/sigc++/macros/class_slot.h.m4	2004-07-11 19:48:15.587194432 -0400
@@ -77,7 +77,7 @@
       if (!obj) return 0;
       SlotData* tmp=manage(new SlotData());
       CallData &data=reinterpret_cast<CallData&>(tmp->data_);
-      data.callback=&callback;
+      data.callback=&[ObjectSlot]NUM($1)_<LIST(R,1,ARG_TYPE($1),[$1],Obj,1)>::callback;
       data.obj=&obj;
       data.func=(Func)func;
       return tmp;
P0_simone.diff (4,666 bytes)   

pkdawson

2004-07-12 00:00

reporter   ~0001216

Hi! I've been working on the gcc-3.4 compile errors in ardour to get it working for Gentoo. After applying my patches, ardour will compile and run using either gcc-3.3 or gcc-3.4. I based most of my work on what Simone has already done. The first diff I'm submitting contains his changes in diffs 01-07, updated for 0.9beta17.1.

2004-07-12 00:02

 

P1_gtk_ardour.diff (2,680 bytes)   
diff -ur ardour-0.9beta17.1.orig/gtk_ardour/audio_time_axis.h ardour-0.9beta17.1/gtk_ardour/audio_time_axis.h
--- ardour-0.9beta17.1.orig/gtk_ardour/audio_time_axis.h	2004-07-11 19:31:11.782836352 -0400
+++ ardour-0.9beta17.1/gtk_ardour/audio_time_axis.h	2004-07-11 19:35:51.593298696 -0400
@@ -252,7 +252,7 @@
 	void show_all_automation ();
 	void show_existing_automation ();
 
-	friend struct RedirectAutomationNode {
+	struct RedirectAutomationNode {
 	    unsigned long     what;
 	    Gtk::CheckMenuItem* menu_item;
 	    AutomationTimeAxisView* view;
@@ -264,7 +264,7 @@
 	    ~RedirectAutomationNode ();
 	};
 
-	friend struct RedirectAutomationInfo {
+	struct RedirectAutomationInfo {
 	    ARDOUR::Redirect* redirect;
 	    bool valid;
 	    Gtk::Menu* menu;
diff -ur ardour-0.9beta17.1.orig/gtk_ardour/editor_ops.cc ardour-0.9beta17.1/gtk_ardour/editor_ops.cc
--- ardour-0.9beta17.1.orig/gtk_ardour/editor_ops.cc	2004-07-11 19:31:11.772837872 -0400
+++ ardour-0.9beta17.1/gtk_ardour/editor_ops.cc	2004-07-11 19:35:51.600297632 -0400
@@ -2814,7 +2814,6 @@
 void
 Editor::paste_named_selection (float times)
 {
-	using Gtk::CList_Helpers;
 	Gtk::CList_Helpers::SelectionList& selected = named_selection_display.selection();
 	TrackSelection::iterator i;
 
diff -ur ardour-0.9beta17.1.orig/gtk_ardour/editor_region_list.cc ardour-0.9beta17.1/gtk_ardour/editor_region_list.cc
--- ardour-0.9beta17.1.orig/gtk_ardour/editor_region_list.cc	2004-07-11 19:31:11.773837720 -0400
+++ ardour-0.9beta17.1/gtk_ardour/editor_region_list.cc	2004-07-11 19:35:51.601297480 -0400
@@ -195,7 +195,6 @@
 void
 Editor::add_audio_region_to_region_display (AudioRegion *region)
 {
-	using Gtk::CTree_Helpers;
 
 	vector<const char*> item;
 	Gtk::CTree_Helpers::RowList::iterator i;
diff -ur ardour-0.9beta17.1.orig/gtk_ardour/mixer_strip.cc ardour-0.9beta17.1/gtk_ardour/mixer_strip.cc
--- ardour-0.9beta17.1.orig/gtk_ardour/mixer_strip.cc	2004-07-11 19:31:11.784836048 -0400
+++ ardour-0.9beta17.1/gtk_ardour/mixer_strip.cc	2004-07-11 19:35:51.611295960 -0400
@@ -1829,7 +1829,6 @@
 gint
 MixerStrip::compute_redirect_sort_keys ()
 {
-	using Gtk::CList_Helpers;
 	CList_Helpers::RowList::iterator i;
 	unsigned long sort_key;
 
diff -ur ardour-0.9beta17.1.orig/gtk_ardour/route_params_ui.cc ardour-0.9beta17.1/gtk_ardour/route_params_ui.cc
--- ardour-0.9beta17.1.orig/gtk_ardour/route_params_ui.cc	2004-07-11 19:31:11.779836808 -0400
+++ ardour-0.9beta17.1/gtk_ardour/route_params_ui.cc	2004-07-11 19:35:51.620294592 -0400
@@ -1037,7 +1037,6 @@
 gint
 RouteParams_UI::compute_redirect_sort_keys ()
 {
-	using Gtk::CList_Helpers;
 	CList_Helpers::RowList::iterator i;
 	unsigned long sort_key;
P1_gtk_ardour.diff (2,680 bytes)   

2004-07-12 00:14

 

P2_remove_unused.diff (697 bytes)   
diff -ur ardour-0.9beta17.1.orig/libs/gtkmm/src/curve.gen_h ardour-0.9beta17.1/libs/gtkmm/src/curve.gen_h
--- ardour-0.9beta17.1.orig/libs/gtkmm/src/curve.gen_h	2004-07-11 19:30:29.971192688 -0400
+++ ardour-0.9beta17.1/libs/gtkmm/src/curve.gen_h	2004-07-11 20:05:55.149116536 -0400
@@ -136,6 +136,7 @@
     void gtk_curve_get_vector(GtkCurve*,int,gfloat*),
     void get_vector(int num,gfloat* data));
 
+#if 0
   // For containers       
   template <class Iterator>
   int get_vector(Iterator b,Iterator e) const
@@ -150,6 +151,7 @@
       delete [] data;
       return i;
     };
+#endif
 
   //void gtk_curve_set_vector(GtkCurve*,int,gfloat[]);
   //: Sets the vector of points on the curve.
P2_remove_unused.diff (697 bytes)   

2004-07-12 00:14

 

P3_inheritance_hack.diff (1,408 bytes)   
diff -ur ardour-0.9beta17.1.orig/gtk_ardour/ardour_dialog.h ardour-0.9beta17.1/gtk_ardour/ardour_dialog.h
--- ardour-0.9beta17.1.orig/gtk_ardour/ardour_dialog.h	2004-07-11 19:30:30.116170648 -0400
+++ ardour-0.9beta17.1/gtk_ardour/ardour_dialog.h	2004-07-11 20:07:50.985506728 -0400
@@ -48,7 +48,6 @@
 	void set_keyboard_input (bool yn);
 	int  run_status();
 
-  protected:
 	gint enter_notify_event_impl (GdkEventCrossing*);
 	gint leave_notify_event_impl (GdkEventCrossing*);
 	gint unmap_event_impl (GdkEventAny *);
diff -ur ardour-0.9beta17.1.orig/gtk_ardour/route_ui.h ardour-0.9beta17.1/gtk_ardour/route_ui.h
--- ardour-0.9beta17.1.orig/gtk_ardour/route_ui.h	2004-07-11 19:30:30.118170344 -0400
+++ ardour-0.9beta17.1/gtk_ardour/route_ui.h	2004-07-11 20:08:08.380862232 -0400
@@ -48,7 +48,6 @@
 
 	string name() const;
 	
-  protected:
 	ARDOUR::Route& _route;
 
 	
diff -ur ardour-0.9beta17.1.orig/gtk_ardour/visual_time_axis.h ardour-0.9beta17.1/gtk_ardour/visual_time_axis.h
--- ardour-0.9beta17.1.orig/gtk_ardour/visual_time_axis.h	2004-07-11 19:30:30.102172776 -0400
+++ ardour-0.9beta17.1/gtk_ardour/visual_time_axis.h	2004-07-11 20:08:25.074324440 -0400
@@ -135,7 +135,6 @@
 		 */
 		//SigC::Signal2<void,std::string,void*> VisualTimeAxisRemoved ;
 
-	protected:
 		//---------------------------------------------------------------------------------------//
 		// Constructor / Desctructor
 		
P3_inheritance_hack.diff (1,408 bytes)   

2004-07-12 00:15

 

P4_base.h_gcc34.diff (555 bytes)   
diff -ur ardour-0.9beta17.1.orig/libs/gtkmm/src/gtk--/base.h ardour-0.9beta17.1/libs/gtkmm/src/gtk--/base.h
--- ardour-0.9beta17.1.orig/libs/gtkmm/src/gtk--/base.h	2004-07-11 19:31:11.624860368 -0400
+++ ardour-0.9beta17.1/libs/gtkmm/src/gtk--/base.h	2004-07-11 19:35:51.892253248 -0400
@@ -482,7 +482,7 @@
   value_type operator*() const
   {
     if (node && node->data)
-      return Gtk::wrap(static_cast<impl*>((*node).data));
+      return static_cast<value_type>( Gtk::wrap_auto((GtkObject*)static_cast<impl*>((*node).data)) );
     return 0;
   }
P4_base.h_gcc34.diff (555 bytes)   

pkdawson

2004-07-12 00:23

reporter   ~0001217

P1 and P2 simply get rid of some unused code that was giving gcc errors.
With gcc-3.4, Gtk::wrap wasn't available in gtk--/base.h, so I just copied what Gtk::wrap did into the function that needed it (see P4).

You probably won't want to merge P3, because it removes the protected keyword from three classes, making everything that was protected public. This is the ugly-but-easy way to fix the "inaccessible base" errors that pop up in gcc-3.4.

taybin

2004-07-31 00:30

administrator   ~0001317

Last edited: 2004-07-31 01:17

I'm going to start applying the obvious ones into the tree before they drift too far out of date.

I've applied 01, 03, 07, and P1 to my tree.

edited on: 07-30-04 18:17

taybin

2004-08-17 19:32

administrator   ~0001416

The rest were applied as well. Any remaining incompatibilities should go into a new bug report.

Issue History

Date Modified Username Field Change
2004-06-14 22:16 Simone Piunno New Issue
2004-06-14 22:16 Simone Piunno File Added: ardour-0.9_beta16-gcc34.patch
2004-06-14 22:16 Simone Piunno E-mail => pioppo@ferrara.linux.it
2004-06-14 22:16 Simone Piunno Name => Simone Piunno
2004-06-15 00:00 paul Note Added: 0001019
2004-06-30 12:41 paul Note Added: 0001150
2004-06-30 18:07 Simone Piunno Note Added: 0001151
2004-06-30 18:07 Simone Piunno File Added: 01_stl_macros.diff
2004-06-30 18:08 Simone Piunno File Added: 02_sigc++.diff
2004-06-30 18:08 Simone Piunno File Added: 03_apply_with_points_tempo.h.diff
2004-06-30 18:09 Simone Piunno File Added: 04_proxy_using.diff
2004-06-30 18:09 Simone Piunno File Added: 07_pix_explicit_specialization.diff
2004-07-11 23:54 pkdawson File Added: P0_simone.diff
2004-07-12 00:00 pkdawson Note Added: 0001216
2004-07-12 00:02 pkdawson File Added: P1_gtk_ardour.diff
2004-07-12 00:14 pkdawson File Added: P2_remove_unused.diff
2004-07-12 00:14 pkdawson File Added: P3_inheritance_hack.diff
2004-07-12 00:15 pkdawson File Added: P4_base.h_gcc34.diff
2004-07-12 00:23 pkdawson Note Added: 0001217
2004-07-31 00:30 taybin Note Added: 0001317
2004-07-31 01:17 taybin Note Edited: 0001317
2004-08-17 19:32 taybin Status new => resolved
2004-08-17 19:32 taybin Resolution open => fixed
2004-08-17 19:32 taybin Assigned To => taybin
2004-08-17 19:32 taybin Note Added: 0001416
2008-11-20 23:38 seablade Status resolved => closed