Add run-time version checks

Just like CLUTTER_CHECK_VERSION does version checking at compile
time, we need a way to verify the version of the library that we
are linking against. This is mostly needed for language bindings
and for run-time loadable modules -- when we'll get those.
This commit is contained in:
Emmanuele Bassi 2009-10-30 11:02:35 +00:00
parent f8e6727e74
commit f551cbfb61
3 changed files with 55 additions and 1 deletions

View File

@ -81,6 +81,10 @@ static GSList *main_loops = NULL;
guint clutter_debug_flags = 0; /* global clutter debug flag */
const guint clutter_major_version = CLUTTER_MAJOR_VERSION;
const guint clutter_minor_version = CLUTTER_MINOR_VERSION;
const guint clutter_micro_version = CLUTTER_MICRO_VERSION;
#ifdef CLUTTER_ENABLE_DEBUG
static const GDebugKey clutter_debug_keys[] = {
{ "misc", CLUTTER_DEBUG_MISC },
@ -2995,3 +2999,33 @@ _clutter_run_repaint_functions (void)
if (reinvoke_list)
context->repaint_funcs = reinvoke_list;
}
/**
* clutter_check_version:
* @major: major version, like 1 in 1.2.3
* @minor: minor version, like 2 in 1.2.3
* @micro: micro version, like 3 in 1.2.3
*
* Run-time version check, to check the version the Clutter library
* that an application is currently linked against
*
* This is the run-time equivalent of the compile-time %CLUTTER_CHECK_VERSION
* pre-processor macro
*
* Return value: %TRUE if the version of the Clutter library is
* greater than (@major, @minor, @micro), and %FALSE otherwise
*
* Since: 1.2
*/
gboolean
clutter_check_version (guint major,
guint minor,
guint micro)
{
return (clutter_major_version > major ||
(clutter_major_version == major &&
clutter_minor_version > minor) ||
(clutter_major_version == major &&
clutter_minor_version == minor &&
clutter_micro_version >= micro));
}

View File

@ -34,6 +34,10 @@
#ifndef __CLUTTER_VERSION_H__
#define __CLUTTER_VERSION_H__
#include <glib.h>
G_BEGIN_DECLS
/**
* CLUTTER_MAJOR_VERSION:
*
@ -117,7 +121,7 @@
*
* The default GObject type for the Clutter stage.
*
* Since 0.8
* Since: 0.8
*/
#define CLUTTER_STAGE_TYPE @CLUTTER_STAGE_TYPE@
@ -131,5 +135,14 @@
*/
#define CLUTTER_NO_FPU CLUTTER_NO_FPU_MACRO_WAS_REMOVED
extern const guint clutter_major_version;
extern const guint clutter_minor_version;
extern const guint clutter_micro_version;
gboolean clutter_check_version (guint major,
guint minor,
guint micro);
G_END_DECLS
#endif /* __CLUTTER_VERSION_H__ */

View File

@ -1125,10 +1125,17 @@ CLUTTER_MICRO_VERSION
CLUTTER_VERSION
CLUTTER_VERSION_S
CLUTTER_VERSION_HEX
<SUBSECTION>
CLUTTER_CHECK_VERSION
<SUBSECTION>
CLUTTER_FLAVOUR
CLUTTER_COGL
CLUTTER_NO_FPU
<SUBSECTION>
clutter_check_version
</SECTION>
<SECTION>