diff options
author | Sakari Bergen <sakari.bergen@beatwaves.net> | 2010-12-19 23:09:30 +0000 |
---|---|---|
committer | Sakari Bergen <sakari.bergen@beatwaves.net> | 2010-12-19 23:09:30 +0000 |
commit | bb7dbe6d86e08ea0fedf12ce50ca3d395aa212a5 (patch) | |
tree | 09e723280eb6bc8f17e7099c7dde99b6ec956a6b /gtk2_ardour/canvas-waveview.c | |
parent | e212c8de6645b6982cd83f229dea29b577e8c6d0 (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.c | 27 |
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: |