add DRI2QeuryExtensionAndCheckVersion 88/34888/1 accepted/tizen_common accepted/tizen_mobile accepted/tizen_tv accepted/tizen_wearable tizen tizen_3.0.2014.q4_common tizen_3.0.2015.q1_common tizen_3.0.2015.q2_common accepted/tizen/common/20150204.152943 accepted/tizen/mobile/20150205.042123 accepted/tizen/tv/20150205.022707 accepted/tizen/wearable/20150205.062212 submit/tizen_common/20150204.072312 submit/tizen_mobile/20150204.072322 submit/tizen_tv/20150204.072328 submit/tizen_wearable/20150204.072340
authorSooChan Lim <sc1.lim@samsung.com>
Mon, 17 Nov 2014 10:00:26 +0000 (19:00 +0900)
committerSooChan Lim <sc1.lim@samsung.com>
Wed, 4 Feb 2015 06:47:12 +0000 (15:47 +0900)
Change-Id: I6a941dcfffea1708e160d2529fdb1488e0376d0c

src/dri2.c
src/dri2.h

index 1701ad3..ee6e22b 100755 (executable)
@@ -276,6 +276,80 @@ DRI2QueryVersion(Display * dpy, int *major, int *minor)
 }
 
 Bool
+DRI2QeuryExtensionAndCheckVersion(Display * dpy, int *eventBase, int *errorBase, int *major, int *minor, int check_major, int check_minor)
+{
+   XExtDisplayInfo *info = DRI2FindDisplay(dpy);
+   xDRI2QueryVersionReply rep;
+   xDRI2QueryVersionReq *req;
+   int i, nevents;
+   char* ptr;
+
+   XextCheckExtension(dpy, info, dri2ExtensionName, False);
+
+   LockDisplay(dpy);
+   GetReq(DRI2QueryVersion, req);
+   req->reqType = info->codes->major_opcode;
+   req->dri2ReqType = X_DRI2QueryVersion;
+   req->majorVersion = DRI2_MAJOR;
+   req->minorVersion = DRI2_MINOR;
+   if (!_XReply(dpy, (xReply *) & rep, 0, xFalse)) {
+      UnlockDisplay(dpy);
+      SyncHandle();
+      return False;
+   }
+   *major = rep.majorVersion;
+   *minor = rep.minorVersion;
+   UnlockDisplay(dpy);
+   SyncHandle();
+
+   if (rep.majorVersion < check_major)
+       goto version_err;
+
+   if (rep.minorVersion < check_major)
+       goto version_err;
+
+   if((ptr=getenv("DRI2LOG")))
+   {
+       bEnableLog = atoi(ptr);
+   }
+
+   if (XextHasExtension(info)) {
+       *eventBase = info->codes->first_event;
+       *errorBase = info->codes->first_error;
+       return True;
+   }
+
+   switch (rep.minorVersion) {
+   case 1:
+       nevents = 0;
+       break;
+   case 2:
+       nevents = 1;
+       break;
+   case 3:
+   default:
+       nevents = 2;
+       break;
+   }
+
+#ifndef _EMUL_
+   for (i = 0; i < nevents; i++) {
+       XESetWireToEvent (dpy, info->codes->first_event + i, DRI2WireToEvent);
+       XESetEventToWire (dpy, info->codes->first_event + i, DRI2EventToWire);
+   }
+#endif
+
+   return True;
+
+version_err:
+
+   XextRemoveDisplay (dri2Info, dpy);
+
+   return False;
+}
+
+
+Bool
 DRI2Connect(Display * dpy, XID window, char **driverName, char **deviceName)
 {
    XExtDisplayInfo *info = DRI2FindDisplay(dpy);
index 3aab4ab..e10d0d5 100755 (executable)
@@ -61,6 +61,9 @@ extern Bool
 DRI2QueryVersion(Display * display, int *major, int *minor);
 
 extern Bool
+DRI2QeuryExtensionAndCheckVersion(Display * dpy, int *eventBase, int *errorBase, int *major, int *minor, int check_major, int check_minor);
+
+extern Bool
 DRI2Connect(Display * display, XID window,
             char **driverName, char **deviceName);