diff -Nru primus-201302241911git~raring1/README.md primus-201303160857git~raring1/README.md --- primus-201302241911git~raring1/README.md 2013-02-24 19:11:17.000000000 +0000 +++ primus-201303160857git~raring1/README.md 2013-03-16 08:57:12.000000000 +0000 @@ -20,7 +20,7 @@ and [lib32-primus-git](https://aur.archlinux.org/packages.php?ID=63240) in AUR * Gentoo: `primus-9999.ebuild` in the `bumblebee` overlay -* Ubuntu: [primus PPA](https://launchpad.net/~zhurikhin/+archive/primus) +* Ubuntu: in the [Bumblebee PPA](https://launchpad.net/~bumblebee/+archive/stable) Building for multilib (32-bit + 64-bit) systems ----------------------------------------------- diff -Nru primus-201302241911git~raring1/debian/bzr-builder.manifest primus-201303160857git~raring1/debian/bzr-builder.manifest --- primus-201302241911git~raring1/debian/bzr-builder.manifest 2013-02-24 19:11:17.000000000 +0000 +++ primus-201303160857git~raring1/debian/bzr-builder.manifest 2013-03-16 08:57:14.000000000 +0000 @@ -1,3 +1,3 @@ -# bzr-builder format 0.3 deb-version 201302241911git -lp:~zhurikhin/+junk/master revid:git-v1:299ef8d3c2676d80b42c178b462b291de43233b5 +# bzr-builder format 0.3 deb-version 201303160857git +lp:~zhurikhin/+junk/master revid:git-v1:bb36c36ade2e89ea48bacaa830471a7eb64f20a0 nest-part packaging lp:~zhurikhin/+junk/debian debian debian revid:git-v1:9c47acbc69bdccf51c1d43ba0f0c40822029c829 diff -Nru primus-201302241911git~raring1/debian/changelog primus-201303160857git~raring1/debian/changelog --- primus-201302241911git~raring1/debian/changelog 2013-02-24 19:11:17.000000000 +0000 +++ primus-201303160857git~raring1/debian/changelog 2013-03-16 08:57:14.000000000 +0000 @@ -1,8 +1,8 @@ -primus (201302241911git~raring1) raring; urgency=low +primus (201303160857git~raring1) raring; urgency=low * Auto build. - -- Dmitry Zhurikhin Sun, 24 Feb 2013 19:11:17 +0000 + -- Dmitry Zhurikhin Sat, 16 Mar 2013 08:57:14 +0000 primus (121104-0ubuntu1) precise; urgency=low diff -Nru primus-201302241911git~raring1/libglfork.cpp primus-201303160857git~raring1/libglfork.cpp --- primus-201302241911git~raring1/libglfork.cpp 2013-02-24 19:11:17.000000000 +0000 +++ primus-201303160857git~raring1/libglfork.cpp 2013-03-16 08:57:12.000000000 +0000 @@ -44,7 +44,7 @@ static void *real_dlsym(void *handle, const char *symbol) { typedef void* (*dlsym_fn)(void *, const char*); - static dlsym_fn pdlsym = (dlsym_fn) dlsym(RTLD_DEFAULT, "dlsym"); + static dlsym_fn pdlsym = (dlsym_fn) dlsym(dlopen("libdl.so.2", RTLD_LAZY), "dlsym"); return pdlsym(handle, symbol); } @@ -152,10 +152,11 @@ connect(sock, (struct sockaddr *)&addr, sizeof(addr)); if (errno) perror("connect"); - char c = 'C'; + static char c[256] = "C"; send(sock, &c, 1, 0); - recv(sock, &c, 1, 0); - die_if(c != 'Y', "failure contacting bumblebee daemon\n"); + recv(sock, &c, 255, 0); + die_if(c[0] == 'N', "Bumblebee daemon reported: %s\n", c + 5); + die_if(c[0] != 'Y', "failure contacting Bumblebee daemon\n"); // the socket will be closed when the application quits, then bumblebee will shut down the secondary X #else #warning Building without Bumblebee daemon support @@ -509,6 +510,12 @@ XGetGeometry(dpy, draw, &root, &x, &y, (unsigned *)width, (unsigned *)height, &bw, &d); } +static GLXPbuffer create_pbuffer(DrawableInfo &di) +{ + int pbattrs[] = {GLX_PBUFFER_WIDTH, di.width, GLX_PBUFFER_HEIGHT, di.height, GLX_PRESERVED_CONTENTS, True, None}; + return primus.afns.glXCreatePbuffer(primus.adpy, di.fbconfig, pbattrs); +} + // Create or recall backing Pbuffer for the drawable static GLXPbuffer lookup_pbuffer(Display *dpy, GLXDrawable draw, GLXContext ctx) { @@ -528,10 +535,7 @@ note_geometry(dpy, draw, &di.width, &di.height); } if (!di.pbuffer) - { - int pbattrs[] = {GLX_PBUFFER_WIDTH, di.width, GLX_PBUFFER_HEIGHT, di.height, GLX_PRESERVED_CONTENTS, True, None}; - di.pbuffer = primus.afns.glXCreatePbuffer(primus.adpy, di.fbconfig, pbattrs); - } + di.pbuffer = create_pbuffer(di); return di.pbuffer; } @@ -561,8 +565,7 @@ return; di.width = w; di.height = h; primus.afns.glXDestroyPbuffer(primus.adpy, di.pbuffer); - int pbattrs[] = {GLX_PBUFFER_WIDTH, di.width, GLX_PBUFFER_HEIGHT, di.height, GLX_PRESERVED_CONTENTS, True, None}; - di.pbuffer = primus.afns.glXCreatePbuffer(primus.adpy, di.fbconfig, pbattrs); + di.pbuffer = create_pbuffer(di); GLXContext actx = glXGetCurrentContext(); primus.afns.glXMakeCurrent(primus.adpy, di.pbuffer, actx); di.r.reinit = true;