kwo pushed a commit to branch master.

http://git.enlightenment.org/e16/e16.git/commit/?id=7c6deaabbf66ddb65376552e8d7343df83a1cea8

commit 7c6deaabbf66ddb65376552e8d7343df83a1cea8
Author: Kim Woelders <[email protected]>
Date:   Sun Nov 9 17:52:47 2014 +0100

    Extension version checking cleanups.
---
 src/E.h        |  2 ++
 src/alert.c    |  2 +-
 src/ecompmgr.c |  3 ++-
 src/events.c   | 20 ++++++++++++++------
 src/screen.c   |  4 ++--
 src/util.h     |  4 +++-
 6 files changed, 24 insertions(+), 11 deletions(-)

diff --git a/src/E.h b/src/E.h
index 805ffc0..9409fea 100644
--- a/src/E.h
+++ b/src/E.h
@@ -131,6 +131,8 @@
 
 #define XEXT_AVAILABLE(ext)  (Mode.server.extensions & (1 << ext))
 
+int                 ExtVersion(int ext_ix);
+
 /*
  * Types
  */
diff --git a/src/alert.c b/src/alert.c
index d7df7f7..f7d57c0 100644
--- a/src/alert.c
+++ b/src/alert.c
@@ -35,7 +35,7 @@
 #if USE_COMPOSITE
 #include <X11/extensions/Xcomposite.h>
 /* Composite Overlay Window (client) availability */
-#if (1000 * COMPOSITE_MAJOR + COMPOSITE_MINOR) >= 3
+#if VERS(COMPOSITE_MAJOR, COMPOSITE_MINOR) >= VERS(0, 3)
 #define USE_COMPOSITE_OVERLAY_WINDOW 1
 #else
 #define USE_COMPOSITE_OVERLAY_WINDOW 0
diff --git a/src/ecompmgr.c b/src/ecompmgr.c
index 2ebd58f..8feb970 100644
--- a/src/ecompmgr.c
+++ b/src/ecompmgr.c
@@ -38,6 +38,7 @@
 #include "ewins.h"             /* EwinsManage() */
 #include "hints.h"
 #include "timers.h"
+#include "util.h"
 #include "windowmatch.h"
 #include "xwin.h"
 
@@ -62,7 +63,7 @@
 #define USE_CLIP_RELATIVE_TO_DESK 1
 
 /* Composite Overlay Window (client) availability */
-#if (1000 * COMPOSITE_MAJOR + COMPOSITE_MINOR) >= 3
+#if VERS(COMPOSITE_MAJOR, COMPOSITE_MINOR) >= VERS(0, 3)
 #define USE_COMPOSITE_OVERLAY_WINDOW 1
 #else
 #define USE_COMPOSITE_OVERLAY_WINDOW 0
diff --git a/src/events.c b/src/events.c
index f71a8ec..49bb0b1 100644
--- a/src/events.c
+++ b/src/events.c
@@ -66,7 +66,7 @@ static const char  *EventName(unsigned int type);
  */
 
 typedef struct {
-   int                 major, minor;
+   int                 version;
    int                 major_op, event_base, error_base;
 } EServerExtData;
 
@@ -280,7 +280,7 @@ static const EServerExt Extensions[] = {
 static void
 ExtQuery(const EServerExt * ext)
 {
-   int                 available;
+   int                 available, major, minor;
    EServerExtData     *exd = ExtData + ext->ix;
 
    available = XQueryExtension(disp, ext->name, &(exd->major_op),
@@ -290,12 +290,13 @@ ExtQuery(const EServerExt * ext)
      {
        Mode.server.extensions |= 1 << ext->ix;
 
-       ext->query_ver(disp, &(exd->major), &(exd->minor));
+       ext->query_ver(disp, &major, &minor);
+       exd->version = VERS(major, minor);
 
        if (EDebug(EDBUG_TYPE_VERBOSE))
           Eprintf("Extension %-15s version %d.%d -"
                   " req/evt/err base = %3d/%3d/%3d\n", ext->name,
-                  exd->major, exd->minor,
+                  major, minor,
                   exd->major_op, exd->event_base, exd->error_base);
      }
 
@@ -303,6 +304,14 @@ ExtQuery(const EServerExt * ext)
       ext->init(available);
 }
 
+int
+ExtVersion(int ext_ix)
+{
+   EServerExtData     *exd = ExtData + ext_ix;
+
+   return exd->version;
+}
+
 /*
  * File descriptor handling
  */
@@ -357,8 +366,7 @@ EventsInit(void)
 #define XEXT_MASK_CM_ALL ((1 << XEXT_COMPOSITE) | (1 << XEXT_DAMAGE) | \
                           (1 << XEXT_FIXES) | (1 << XEXT_RENDER))
    if (((Mode.server.extensions & XEXT_MASK_CM_ALL) == XEXT_MASK_CM_ALL) &&
-       (ExtData[XEXT_COMPOSITE].major > 0 ||
-       ExtData[XEXT_COMPOSITE].minor >= 2))
+       (ExtData[XEXT_COMPOSITE].version >= VERS(0, 2)))
       Mode.server.extensions |= 1 << XEXT_CM_ALL;
 #endif
 
diff --git a/src/screen.c b/src/screen.c
index 84c2563..436d00e 100644
--- a/src/screen.c
+++ b/src/screen.c
@@ -39,7 +39,7 @@ static int          n_screens = 0;
 
 #if USE_XRANDR
 #include <X11/extensions/Xrandr.h>
-#define RANDR_VERSION (RANDR_MAJOR * 100 + RANDR_MINOR)
+#define RANDR_VERSION VERS(RANDR_MAJOR, RANDR_MINOR)
 
 static void
 _ScreenInitXrandr(void)
@@ -49,7 +49,7 @@ _ScreenInitXrandr(void)
 static void
 _ScreenShowInfoXrandr(void)
 {
-#if RANDR_VERSION >= 102       /* >= 1.2 */
+#if RANDR_VERSION >= VERS(1, 2)        /* >= 1.2 */
    char                buf[4096];
    XRRScreenResources *psr;
    XRRCrtcInfo        *pci;
diff --git a/src/util.h b/src/util.h
index a8f98a7..bbde8ef 100644
--- a/src/util.h
+++ b/src/util.h
@@ -1,6 +1,6 @@
 /*
  * Copyright (C) 2000-2007 Carsten Haitzler, Geoff Harrison and various 
contributors
- * Copyright (C) 2004-2013 Kim Woelders
+ * Copyright (C) 2004-2014 Kim Woelders
  *
  * Permission is hereby granted, free of charge, to any person obtaining a copy
  * of this software and associated documentation files (the "Software"), to
@@ -31,6 +31,8 @@
 #include <stdlib.h>
 #include <string.h>
 
+#define VERS(maj, min) (1000 * (maj) + (min))
+
 #define INT2PTR(i) ((void*)(long)(i))
 #define PTR2INT(p) ((int)(long)(p))
 

-- 


Reply via email to