merges from 0.8 for 64 bit issues

Original commit message from CVS:
merges from 0.8 for 64 bit issues
This commit is contained in:
Thomas Vander Stichele 2005-05-02 15:20:30 +00:00
parent 0757f3df2e
commit 8f87745592
6 changed files with 56 additions and 9 deletions

View file

@ -1,3 +1,14 @@
2005-05-02 Thomas Vander Stichele <thomas at apestaart dot org>
* docs/gst/tmpl/gstconfig.sgml:
* gst/gstconfig.h.in:
move documentation for some symbols. Add doc for GST_PTR_FORMAT
* testsuite/debug/printf_extension.c: (main):
Do not use GST_PTR_FORMAT on pointers to types with
sizeof < sizeof(gpointer). Fixes test on 64-bit
* testsuite/elements/property.h:
use correct printf format
2005-05-02 Wim Taymans <wim@fluendo.com> 2005-05-02 Wim Taymans <wim@fluendo.com>
* docs/design/draft-push-pull.txt: * docs/design/draft-push-pull.txt:

View file

@ -54,6 +54,12 @@
@GST_DISABLE_URI_DEFINE@ @GST_DISABLE_URI_DEFINE@
/* printf extension format */ /* printf extension format */
/**
* GST_PTR_FORMAT:
*
* printf format type used to debug GStreamer types.
* This can only be used on types whose size is >= sizeof(gpointer).
*/
@GST_PRINTF_EXTENSION_FORMAT_DEFINE@ @GST_PRINTF_EXTENSION_FORMAT_DEFINE@
/* whether or not the CPU supports unaligned access */ /* whether or not the CPU supports unaligned access */
@ -67,6 +73,22 @@
# define GST_DISABLE_LOADSAVE_REGISTRY # define GST_DISABLE_LOADSAVE_REGISTRY
#endif #endif
/**
* GST_EXPORT:
*
* Export the given variable from the built shared object.
*
* On Windows, this exports the variable from the DLL.
* On other platforms, this gets defined to "extern".
*/
/**
* GST_PLUGIN_EXPORT:
*
* Export the plugin's definition.
*
* On Windows, this exports the plugin definition from the DLL.
* On other platforms, this gets defined as a no-op.
*/
#ifdef WIN32 #ifdef WIN32
#define GST_PLUGIN_EXPORT __declspec(dllexport) extern #define GST_PLUGIN_EXPORT __declspec(dllexport) extern
#ifdef GST_EXPORTS #ifdef GST_EXPORTS
@ -75,7 +97,7 @@
#define GST_EXPORT __declspec(dllimport) extern #define GST_EXPORT __declspec(dllimport) extern
#endif #endif
#else /* not WIN32 */ #else /* not WIN32 */
#define GST_PLUGIN_EXPORT #define GST_PLUGIN_EXPORT
#define GST_EXPORT extern #define GST_EXPORT extern
#endif #endif

View file

@ -23,7 +23,9 @@ main (gint argc, gchar * argv[])
{ {
GstCaps *caps; GstCaps *caps;
GstElement *element; GstElement *element;
G_GNUC_UNUSED int zero = 0; G_GNUC_UNUSED gpointer null = NULL;
/* G_GNUC_UNUSED int zero = 0; */
gst_init (&argc, &argv); gst_init (&argc, &argv);
@ -34,8 +36,13 @@ main (gint argc, gchar * argv[])
GST_ERROR ("This should print caps: %" GST_PTR_FORMAT, caps); GST_ERROR ("This should print caps: %" GST_PTR_FORMAT, caps);
GST_ERROR ("This should print an object: %" GST_PTR_FORMAT, element); GST_ERROR ("This should print an object: %" GST_PTR_FORMAT, element);
GST_ERROR ("This should print null: %" GST_PTR_FORMAT, NULL); GST_ERROR ("This should print null: %" GST_PTR_FORMAT, NULL);
GST_ERROR ("This should print a pointer: %" GST_PTR_FORMAT, &zero); GST_ERROR ("This should print a pointer: %" GST_PTR_FORMAT, &null);
//GST_ERROR ("This should print a pointer: %" GST_PTR_FORMAT, (void *)1); /* 64 bit address to a 32 bit int will cause the GObject interpretation
* to segfault; since GST_PTR_FORMAT only works on stuff with
* sizeof(gpointer) */
/* GST_ERROR ("This should print a pointer: %" GST_PTR_FORMAT, &zero); */
/* GST_ERROR ("This should print a pointer: %" GST_PTR_FORMAT, (void *)1); */
return 0; return 0;
} }

View file

@ -10,7 +10,7 @@ property_change_callback (GObject *object, GstObject *orig, GParamSpec *pspec)
g_object_get_property (G_OBJECT (orig), pspec->name, &value); g_object_get_property (G_OBJECT (orig), pspec->name, &value);
/* fix current bug with g_strdup_value_contents not working with gint64 */ /* fix current bug with g_strdup_value_contents not working with gint64 */
if (G_IS_PARAM_SPEC_INT64 (pspec)) if (G_IS_PARAM_SPEC_INT64 (pspec))
str = g_strdup_printf ("%lld", g_value_get_int64 (&value)); str = g_strdup_printf ("%" G_GINT64_FORMAT, g_value_get_int64 (&value));
else else
str = g_strdup_value_contents (&value); str = g_strdup_value_contents (&value);
g_print ("%s: %s = %s\n", GST_OBJECT_NAME (orig), pspec->name, str); g_print ("%s: %s = %s\n", GST_OBJECT_NAME (orig), pspec->name, str);

View file

@ -23,7 +23,9 @@ main (gint argc, gchar * argv[])
{ {
GstCaps *caps; GstCaps *caps;
GstElement *element; GstElement *element;
G_GNUC_UNUSED int zero = 0; G_GNUC_UNUSED gpointer null = NULL;
/* G_GNUC_UNUSED int zero = 0; */
gst_init (&argc, &argv); gst_init (&argc, &argv);
@ -34,8 +36,13 @@ main (gint argc, gchar * argv[])
GST_ERROR ("This should print caps: %" GST_PTR_FORMAT, caps); GST_ERROR ("This should print caps: %" GST_PTR_FORMAT, caps);
GST_ERROR ("This should print an object: %" GST_PTR_FORMAT, element); GST_ERROR ("This should print an object: %" GST_PTR_FORMAT, element);
GST_ERROR ("This should print null: %" GST_PTR_FORMAT, NULL); GST_ERROR ("This should print null: %" GST_PTR_FORMAT, NULL);
GST_ERROR ("This should print a pointer: %" GST_PTR_FORMAT, &zero); GST_ERROR ("This should print a pointer: %" GST_PTR_FORMAT, &null);
//GST_ERROR ("This should print a pointer: %" GST_PTR_FORMAT, (void *)1); /* 64 bit address to a 32 bit int will cause the GObject interpretation
* to segfault; since GST_PTR_FORMAT only works on stuff with
* sizeof(gpointer) */
/* GST_ERROR ("This should print a pointer: %" GST_PTR_FORMAT, &zero); */
/* GST_ERROR ("This should print a pointer: %" GST_PTR_FORMAT, (void *)1); */
return 0; return 0;
} }

View file

@ -10,7 +10,7 @@ property_change_callback (GObject *object, GstObject *orig, GParamSpec *pspec)
g_object_get_property (G_OBJECT (orig), pspec->name, &value); g_object_get_property (G_OBJECT (orig), pspec->name, &value);
/* fix current bug with g_strdup_value_contents not working with gint64 */ /* fix current bug with g_strdup_value_contents not working with gint64 */
if (G_IS_PARAM_SPEC_INT64 (pspec)) if (G_IS_PARAM_SPEC_INT64 (pspec))
str = g_strdup_printf ("%lld", g_value_get_int64 (&value)); str = g_strdup_printf ("%" G_GINT64_FORMAT, g_value_get_int64 (&value));
else else
str = g_strdup_value_contents (&value); str = g_strdup_value_contents (&value);
g_print ("%s: %s = %s\n", GST_OBJECT_NAME (orig), pspec->name, str); g_print ("%s: %s = %s\n", GST_OBJECT_NAME (orig), pspec->name, str);