Blame clutter/clutter-debug.h

Packit 31ecd5
#ifndef __CLUTTER_DEBUG_H__
Packit 31ecd5
#define __CLUTTER_DEBUG_H__
Packit 31ecd5
Packit 31ecd5
#include <glib.h>
Packit 31ecd5
#include "clutter-main.h"
Packit 31ecd5
Packit 31ecd5
G_BEGIN_DECLS
Packit 31ecd5
Packit 31ecd5
typedef enum {
Packit 31ecd5
  CLUTTER_DEBUG_MISC                = 1 << 0,
Packit 31ecd5
  CLUTTER_DEBUG_ACTOR               = 1 << 1,
Packit 31ecd5
  CLUTTER_DEBUG_TEXTURE             = 1 << 2,
Packit 31ecd5
  CLUTTER_DEBUG_EVENT               = 1 << 3,
Packit 31ecd5
  CLUTTER_DEBUG_PAINT               = 1 << 4,
Packit 31ecd5
  CLUTTER_DEBUG_PANGO               = 1 << 5,
Packit 31ecd5
  CLUTTER_DEBUG_BACKEND             = 1 << 6,
Packit 31ecd5
  CLUTTER_DEBUG_SCHEDULER           = 1 << 7,
Packit 31ecd5
  CLUTTER_DEBUG_SCRIPT              = 1 << 8,
Packit 31ecd5
  CLUTTER_DEBUG_SHADER              = 1 << 9,
Packit 31ecd5
  CLUTTER_DEBUG_MULTISTAGE          = 1 << 10,
Packit 31ecd5
  CLUTTER_DEBUG_ANIMATION           = 1 << 11,
Packit 31ecd5
  CLUTTER_DEBUG_LAYOUT              = 1 << 12,
Packit 31ecd5
  CLUTTER_DEBUG_PICK                = 1 << 13,
Packit 31ecd5
  CLUTTER_DEBUG_EVENTLOOP           = 1 << 14,
Packit 31ecd5
  CLUTTER_DEBUG_CLIPPING            = 1 << 15,
Packit 31ecd5
  CLUTTER_DEBUG_OOB_TRANSFORMS      = 1 << 16
Packit 31ecd5
} ClutterDebugFlag;
Packit 31ecd5
Packit 31ecd5
typedef enum {
Packit 31ecd5
  CLUTTER_DEBUG_NOP_PICKING         = 1 << 0,
Packit 31ecd5
  CLUTTER_DEBUG_DUMP_PICK_BUFFERS   = 1 << 1
Packit 31ecd5
} ClutterPickDebugFlag;
Packit 31ecd5
Packit 31ecd5
typedef enum {
Packit 31ecd5
  CLUTTER_DEBUG_DISABLE_SWAP_EVENTS     = 1 << 0,
Packit 31ecd5
  CLUTTER_DEBUG_DISABLE_CLIPPED_REDRAWS = 1 << 1,
Packit 31ecd5
  CLUTTER_DEBUG_REDRAWS                 = 1 << 2,
Packit 31ecd5
  CLUTTER_DEBUG_PAINT_VOLUMES           = 1 << 3,
Packit 31ecd5
  CLUTTER_DEBUG_DISABLE_CULLING         = 1 << 4,
Packit 31ecd5
  CLUTTER_DEBUG_DISABLE_OFFSCREEN_REDIRECT = 1 << 5,
Packit 31ecd5
  CLUTTER_DEBUG_CONTINUOUS_REDRAW       = 1 << 6,
Packit 31ecd5
  CLUTTER_DEBUG_PAINT_DEFORM_TILES      = 1 << 7
Packit 31ecd5
} ClutterDrawDebugFlag;
Packit 31ecd5
Packit 31ecd5
#ifdef CLUTTER_ENABLE_DEBUG
Packit 31ecd5
Packit 31ecd5
#define CLUTTER_HAS_DEBUG(type)         ((clutter_debug_flags & CLUTTER_DEBUG_##type) != FALSE)
Packit 31ecd5
Packit 31ecd5
#ifdef __GNUC__
Packit 31ecd5
Packit 31ecd5
/* Try the GCC extension for valists in macros */
Packit 31ecd5
#define CLUTTER_NOTE(type,x,a...)                       G_STMT_START {  \
Packit 31ecd5
        if (G_UNLIKELY (CLUTTER_HAS_DEBUG (type))) {                    \
Packit 31ecd5
          _clutter_debug_message ("[" #type "]:" G_STRLOC ": " x, ##a); \
Packit 31ecd5
        }                                               } G_STMT_END
Packit 31ecd5
Packit 31ecd5
#else /* !__GNUC__ */
Packit 31ecd5
/* Try the C99 version; unfortunately, this does not allow us to pass
Packit 31ecd5
 * empty arguments to the macro, which means we have to
Packit 31ecd5
 * do an intemediate printf.
Packit 31ecd5
 */
Packit 31ecd5
#define CLUTTER_NOTE(type,...)                          G_STMT_START {   \
Packit 31ecd5
        if (G_UNLIKELY (CLUTTER_HAS_DEBUG (type))) {                     \
Packit 31ecd5
          gchar *_fmt = g_strdup_printf (__VA_ARGS__);                   \
Packit 31ecd5
          _clutter_debug_message ("[" #type "]:" G_STRLOC ": %s", _fmt); \
Packit 31ecd5
          g_free (_fmt);                                                 \
Packit 31ecd5
        }                                               } G_STMT_END
Packit 31ecd5
#endif
Packit 31ecd5
Packit 31ecd5
#else /* !CLUTTER_ENABLE_DEBUG */
Packit 31ecd5
Packit 31ecd5
#define CLUTTER_NOTE(type,...)         G_STMT_START { } G_STMT_END
Packit 31ecd5
#define CLUTTER_HAS_DEBUG(type)        FALSE
Packit 31ecd5
Packit 31ecd5
#endif /* CLUTTER_ENABLE_DEBUG */
Packit 31ecd5
Packit 31ecd5
extern guint clutter_debug_flags;
Packit 31ecd5
extern guint clutter_pick_debug_flags;
Packit 31ecd5
extern guint clutter_paint_debug_flags;
Packit 31ecd5
Packit 31ecd5
void    _clutter_debug_messagev         (const char *format,
Packit 31ecd5
                                         va_list     var_args);
Packit 31ecd5
void    _clutter_debug_message          (const char *format,
Packit 31ecd5
                                         ...);
Packit 31ecd5
Packit 31ecd5
G_END_DECLS
Packit 31ecd5
Packit 31ecd5
#endif /* __CLUTTER_DEBUG_H__ */