Tags: patch
Usertags: origin-ubuntu ubuntu-patch precise

In Ubuntu, we've applied the attached patch to achieve the following:

  * debian/patches/30_fix-opencv-ftbfs.patch: fixes FTBFS (part of the
    patch comes from the explanation in Debian bug #652770)

We thought you might be interested in doing the same.

--
Pozdrawiam / Kind regards,
Artur Rona

Description: Fixes FTBFS:
 * Avoid #defines conflicts in CImg.h as explained in Debian bug #652770
 * Use correct LDFLAGS for opencv 2.3
Author: Adrien Cunin <adri2...@ubuntu.com>

--- a/CImg.h
+++ b/CImg.h
@@ -233,6 +233,8 @@
 // (with function 'CImg<T>::load_camera()'.
 // Using OpenCV is not mandatory.
 #ifdef cimg_use_opencv
+#undef True
+#undef False
 #include <cstddef>
 #include "cv.h"
 #include "highgui.h"
@@ -6886,7 +6888,7 @@
         if (_is_fullscreen) {
           XWindowAttributes attr;
           XGetWindowAttributes(dpy,_window,&attr);
-          while (attr.map_state!=IsViewable) XSync(dpy,False);
+          while (attr.map_state!=IsViewable) XSync(dpy,0);
           XSetInputFocus(dpy,_window,RevertToParent,CurrentTime);
         }
       } break;
@@ -7016,7 +7018,7 @@
       } while (!is_exposed || !is_mapped);
       do { // Wait for the window to be visible.
         XGetWindowAttributes(dpy,_window,&attr);
-        if (attr.map_state!=IsViewable) { XSync(dpy,False); cimg::sleep(10); }
+        if (attr.map_state!=IsViewable) { XSync(dpy,0); cimg::sleep(10); }
       } while (attr.map_state!=IsViewable);
       _window_x = attr.x;
       _window_y = attr.y;
@@ -7029,7 +7031,7 @@
         static XEvent event;
         event.xexpose.type = Expose;
         event.xexpose.serial = 0;
-        event.xexpose.send_event = True;
+        event.xexpose.send_event = 1;
         event.xexpose.display = dpy;
         event.xexpose.window = _window;
         event.xexpose.x = 0;
@@ -7037,14 +7039,14 @@
         event.xexpose.width = width();
         event.xexpose.height = height();
         event.xexpose.count = 0;
-        XSendEvent(dpy,_window,False,0,&event);
+        XSendEvent(dpy,_window,0,0,&event);
       } else { // Repaint directly (may be called from the expose event).
         GC gc = DefaultGC(dpy,DefaultScreen(dpy));
 #ifdef cimg_use_xshm
         if (_shminfo) {
           const int completion_type = XShmGetEventBase(dpy) + ShmCompletion;
           XEvent event;
-          XShmPutImage(dpy,_window,gc,_image,0,0,0,0,_width,_height,True);
+          XShmPutImage(dpy,_window,gc,_image,0,0,0,0,_width,_height,1);
           do { XNextEvent(dpy,&event); } while (event.type!=completion_type);  // Wait for the image drawing to be completed.
         } else XPutImage(dpy,_window,gc,_image,0,0,0,0,_width,_height);
 #else
@@ -7071,7 +7073,7 @@
             nshminfo->shmaddr = nimage->data = (char*)shmat(nshminfo->shmid,0,0);
             if (nshminfo->shmaddr==(char*)-1) { shmctl(nshminfo->shmid,IPC_RMID,0); XDestroyImage(nimage); delete nshminfo; return; }
             else {
-              nshminfo->readOnly = False;
+              nshminfo->readOnly = 0;
               cimg::X11_attr().is_shm_enabled = true;
               XErrorHandler oldXErrorHandler = XSetErrorHandler(_assign_xshm);
               XShmAttach(dpy,nshminfo);
@@ -7141,7 +7143,7 @@
             XRRSetScreenConfig(dpy,config,DefaultRootWindow(dpy),
                                cimg::X11_attr().curr_resolution,cimg::X11_attr().curr_rotation,CurrentTime);
             XRRFreeScreenConfigInfo(config);
-            XSync(dpy,False);
+            XSync(dpy,0);
           }
         }
       }
@@ -7154,7 +7156,7 @@
       const unsigned int sx = screen_width(), sy = screen_height();
       if (sx==_width && sy==_height) return;
       XSetWindowAttributes winattr;
-      winattr.override_redirect = True;
+      winattr.override_redirect = 1;
       _background_window = XCreateWindow(dpy,DefaultRootWindow(dpy),0,0,sx,sy,0,0,
                                          InputOutput,CopyFromParent,CWOverrideRedirect,&winattr);
       const unsigned int buf_size = sx*sy*(cimg::X11_attr().nb_bits==8?1:(cimg::X11_attr().nb_bits==16?2:4));
@@ -7169,14 +7171,14 @@
       while (event.type!=MapNotify);
       GC gc = DefaultGC(dpy,DefaultScreen(dpy));
 #ifdef cimg_use_xshm
-      if (_shminfo) XShmPutImage(dpy,_background_window,gc,background_image,0,0,0,0,sx,sy,False);
+      if (_shminfo) XShmPutImage(dpy,_background_window,gc,background_image,0,0,0,0,sx,sy,0);
       else XPutImage(dpy,_background_window,gc,background_image,0,0,0,0,sx,sy);
 #else
       XPutImage(dpy,_background_window,gc,background_image,0,0,0,0,sx,sy);
 #endif
       XWindowAttributes attr;
       XGetWindowAttributes(dpy,_background_window,&attr);
-      while (attr.map_state!=IsViewable) XSync(dpy,False);
+      while (attr.map_state!=IsViewable) XSync(dpy,0);
       XDestroyImage(background_image);
     }
 
@@ -7189,7 +7191,7 @@
         XRRScreenConfiguration *config = XRRGetScreenInfo(dpy,DefaultRootWindow(dpy));
         XRRSetScreenConfig(dpy,config,DefaultRootWindow(dpy),0,cimg::X11_attr().curr_rotation,CurrentTime);
         XRRFreeScreenConfigInfo(config);
-        XSync(dpy,False);
+        XSync(dpy,0);
         cimg::X11_attr().curr_resolution = 0;
       }
 #endif
@@ -7263,7 +7265,7 @@
         if (!_is_closed) _init_fullscreen();
         const unsigned int sx = screen_width(), sy = screen_height();
         XSetWindowAttributes winattr;
-        winattr.override_redirect = True;
+        winattr.override_redirect = 1;
         _window = XCreateWindow(dpy,DefaultRootWindow(dpy),(sx-_width)/2,(sy-_height)/2,_width,_height,0,0,
                                 InputOutput,CopyFromParent,CWOverrideRedirect,&winattr);
       } else
@@ -7304,11 +7306,11 @@
             _shminfo->shmaddr = _image->data = (char*)(_data = shmat(_shminfo->shmid,0,0));
             if (_shminfo->shmaddr==(char*)-1) { shmctl(_shminfo->shmid,IPC_RMID,0); XDestroyImage(_image); delete _shminfo; _shminfo = 0; }
             else {
-              _shminfo->readOnly = False;
+              _shminfo->readOnly = 0;
               cimg::X11_attr().is_shm_enabled = true;
               XErrorHandler oldXErrorHandler = XSetErrorHandler(_assign_xshm);
               XShmAttach(dpy,_shminfo);
-              XSync(dpy,False);
+              XSync(dpy,0);
               XSetErrorHandler(oldXErrorHandler);
               if (!cimg::X11_attr().is_shm_enabled) {
                 shmdt(_shminfo->shmaddr); shmctl(_shminfo->shmid,IPC_RMID,0); XDestroyImage(_image); delete _shminfo; _shminfo = 0;
@@ -7325,11 +7327,11 @@
           _image = XCreateImage(dpy,DefaultVisual(dpy,DefaultScreen(dpy)),cimg::X11_attr().nb_bits,ZPixmap,0,(char*)_data,_width,_height,8,0);
         }
 
-      _wm_window_atom = XInternAtom(dpy,"WM_DELETE_WINDOW",False);
-      _wm_protocol_atom = XInternAtom(dpy,"WM_PROTOCOLS",False);
+      _wm_window_atom = XInternAtom(dpy,"WM_DELETE_WINDOW",0);
+      _wm_protocol_atom = XInternAtom(dpy,"WM_PROTOCOLS",0);
       XSetWMProtocols(dpy,_window,&_wm_window_atom,1);
 
-      if (_is_fullscreen) XGrabKeyboard(dpy,_window,True,GrabModeAsync,GrabModeAsync,CurrentTime);
+      if (_is_fullscreen) XGrabKeyboard(dpy,_window,1,GrabModeAsync,GrabModeAsync,CurrentTime);
       cimg::X11_attr().wins[cimg::X11_attr().nb_wins++]=this;
       if (!_is_closed) _map_window(); else { _window_x = _window_y = cimg::type<int>::min(); }
       XUnlockDisplay(dpy);
@@ -7364,7 +7366,7 @@
       _data = 0; _image = 0;
       if (cimg::X11_attr().nb_bits==8) XFreeColormap(dpy,_colormap);
       _colormap = 0;
-      XSync(dpy,False);
+      XSync(dpy,0);
 
       // Reset display variables
       delete[] _title;
@@ -7540,7 +7542,7 @@
       XWarpPointer(dpy,0L,_window,0,0,0,0,posx,posy);
       _mouse_x = posx; _mouse_y = posy;
       _is_moved = false;
-      XSync(dpy,False);
+      XSync(dpy,0);
       XUnlockDisplay(dpy);
       return *this;
     }
--- a/examples/Makefile
+++ b/examples/Makefile
@@ -132,7 +132,7 @@
 
 # Flags to enable OpenCV support.
 CIMG_OPENCV_CFLAGS = -Dcimg_use_opencv -I/usr/include/opencv
-CIMG_OPENCV_LDFLAGS = -lcv -lhighgui
+CIMG_OPENCV_LDFLAGS = -lopencv_core -lopencv_highgui
 
 # Flags used to disable display capablities of CImg
 CIMG_NODISPLAY_CFLAGS = -Dcimg_display=0

Reply via email to