summaryrefslogtreecommitdiff
path: root/gtk2_ardour/canvas-waveview.c
diff options
context:
space:
mode:
authorSakari Bergen <sakari.bergen@beatwaves.net>2010-12-19 23:09:30 +0000
committerSakari Bergen <sakari.bergen@beatwaves.net>2010-12-19 23:09:30 +0000
commitbb7dbe6d86e08ea0fedf12ce50ca3d395aa212a5 (patch)
tree09e723280eb6bc8f17e7099c7dde99b6ec956a6b /gtk2_ardour/canvas-waveview.c
parente212c8de6645b6982cd83f229dea29b577e8c6d0 (diff)
Fix function pointer to void* cast (and vice-versa) related warnings on POSIX systems
git-svn-id: svn://localhost/ardour2/branches/3.0@8300 d708f5d6-7413-0410-9779-e7cbd77b26cf
Diffstat (limited to 'gtk2_ardour/canvas-waveview.c')
-rw-r--r--gtk2_ardour/canvas-waveview.c27
1 files changed, 19 insertions, 8 deletions
diff --git a/gtk2_ardour/canvas-waveview.c b/gtk2_ardour/canvas-waveview.c
index c1383f087b..193b3cd68a 100644
--- a/gtk2_ardour/canvas-waveview.c
+++ b/gtk2_ardour/canvas-waveview.c
@@ -31,6 +31,12 @@
#include "canvas-waveview.h"
#include "rgb_macros.h"
+/* POSIX guarantees casting between void* and function pointers, ISO C doesn't
+ * We can work around warnings by going one step deeper in our casts
+ */
+#ifdef _POSIX_VERSION
+#define POSIX_FUNC_PTR_CAST(type, object) *((type*) &(object))
+#endif // _POSIX_VERSION
extern void c_stacktrace();
@@ -751,6 +757,7 @@ gnome_canvas_waveview_set_property (GObject *object,
item = GNOME_CANVAS_ITEM (object);
waveview = GNOME_CANVAS_WAVEVIEW (object);
+ void * ptr;
switch (prop_id) {
case PROP_DATA_SRC:
gnome_canvas_waveview_set_data_src (waveview, g_value_get_pointer(value));
@@ -763,22 +770,26 @@ gnome_canvas_waveview_set_property (GObject *object,
break;
case PROP_LENGTH_FUNCTION:
- waveview->length_function = (waveview_length_function_t) g_value_get_pointer(value);
+ ptr = g_value_get_pointer(value);
+ waveview->length_function = POSIX_FUNC_PTR_CAST(waveview_length_function_t, ptr);
redraw = TRUE;
break;
case PROP_SOURCEFILE_LENGTH_FUNCTION:
- waveview->sourcefile_length_function = (waveview_sourcefile_length_function_t) g_value_get_pointer(value);
+ ptr = g_value_get_pointer(value);
+ waveview->sourcefile_length_function = POSIX_FUNC_PTR_CAST(waveview_sourcefile_length_function_t, ptr);
redraw = TRUE;
break;
case PROP_PEAK_FUNCTION:
- waveview->peak_function = (waveview_peak_function_t) g_value_get_pointer(value);
+ ptr = g_value_get_pointer(value);
+ waveview->peak_function = POSIX_FUNC_PTR_CAST(waveview_peak_function_t, ptr);
redraw = TRUE;
break;
case PROP_GAIN_FUNCTION:
- waveview->gain_curve_function = (waveview_gain_curve_function_t) g_value_get_pointer(value);
+ ptr = g_value_get_pointer(value);
+ waveview->gain_curve_function = POSIX_FUNC_PTR_CAST(waveview_gain_curve_function_t, ptr);
redraw = TRUE;
break;
@@ -946,19 +957,19 @@ gnome_canvas_waveview_get_property (
break;
case PROP_LENGTH_FUNCTION:
- g_value_set_pointer(value, (void*) waveview->length_function);
+ g_value_set_pointer(value, POSIX_FUNC_PTR_CAST(void*, waveview->length_function));
break;
case PROP_SOURCEFILE_LENGTH_FUNCTION:
- g_value_set_pointer(value, (void*) waveview->sourcefile_length_function);
+ g_value_set_pointer(value, POSIX_FUNC_PTR_CAST(void*, waveview->sourcefile_length_function));
break;
case PROP_PEAK_FUNCTION:
- g_value_set_pointer(value, (void*) waveview->peak_function);
+ g_value_set_pointer(value, POSIX_FUNC_PTR_CAST(void*, waveview->peak_function));
break;
case PROP_GAIN_FUNCTION:
- g_value_set_pointer(value, (void*) waveview->gain_curve_function);
+ g_value_set_pointer(value, POSIX_FUNC_PTR_CAST(void*, waveview->gain_curve_function));
break;
case PROP_GAIN_SRC: