My X11/Imlib2 based App no longer working after latest 12.3 updates :(

Hi,

I have an X11/Imlib2 based application that no longer works as expected since the latest updates for OpenSuse 12.3.

The problem is that the application should do screenshots of a specific window that is not in the foreground. This worked without problems until now. But now if other windows occlude the target window the overlapping parts of the other windows are also in the screenshot.

Anybody has an idea what to do??? Can I hope that this will be fixed soon, otherwise I will have to revert this updates somehow.

I get the window from X11 based on the window title.

Then I use the following to do the screenshot (in a loop):


          Imlib_Image buffer;
          buffer = imlib_create_image(display_width, display_height);
          imlib_context_set_image(buffer);
          imlib_context_set_display(display);
          imlib_context_set_visual(DefaultVisual(display, screen_num));
          imlib_context_set_drawable(window);
          imlib_copy_drawable_to_image(0, 0, 0, display_width, display_height, 0, 0, 1);
          imlib_context_set_image(buffer);
          imlib_image_set_format("png");

Thanks and regards

I now downgraded the following, problem still there. Could it be caused by the kernel update that also happened???:

2013-06-21 12:12:52|install|libX11-data|1.5.0-4.7.1|noarch||repo-update|e987677a35e50adcbe99d077fe969fe221d94540a1dd8eb84169474e92d363b2|
2013-06-21 12:15:36|install|libX11-6-32bit|1.5.0-4.7.1|x86_64||repo-update|a0d370c62c9f73a9b9f9efb30e42f439cdbc4e4087de2404bc08b11eb70e864c|
2013-06-21 12:15:36|install|libX11-xcb1-32bit|1.5.0-4.7.1|x86_64||repo-update|c56b9e700bbd9c8e538740127152bc585711d16b6234c5d9bdf89d547470d7cb|
2013-06-21 12:15:55|install|libX11-xcb1|1.5.0-4.7.1|x86_64||repo-update|a9e9e80ed2d6699318d6911686cc3b14a57ad1c49fa71366bdd19ce3e852dcc8|
2013-06-21 12:15:56|install|libX11-6|1.5.0-4.7.1|x86_64||repo-update|66eebe8cbd4d1e70bba97151404aa5a36676213526cffa44200c6a6f3581e72c|
2013-06-21 12:23:32|install|libX11-devel|1.5.0-4.7.1|x86_64||repo-update|7b2a716dadd0b87d1f6c54e1e2907b0d0b12850c99554bcde6dcb8de9f636cf9|

to 1.5.0-4.2.1

2013-06-19 07:17:54|install|libXxf86vm1|1.1.2-4.6.1|x86_64||repo-update|4159e09d731275031ae9501fbd6e94410cf9c92793edd4a0f379ea375e0c0a50|
2013-06-19 07:17:55|install|libXxf86vm1-32bit|1.1.2-4.6.1|x86_64||repo-update|24bd77dd4092595a98497f27160cf4edd2f6d4d7cb842e05374236d471e88964|
2013-06-19 07:17:55|install|libXxf86vm-devel|1.1.2-4.6.1|x86_64||repo-update|bfb6e8f1a10a6367dc580ddfa71e3d70626db89f42f75ab65f31083334d3038c|

to 1.1.2-4.1.1

2013-06-21 12:23:32|install|libXp6|1.0.1-4.6.1|x86_64||repo-update|09d30bb7fb0c678b73f381eb8a0057267f47699c1bdfccb8276fca0e6a2285c3|

to 1.0.1-4.1.1

Man, this is driving me crazy. Using previous kernel and still not working…

[Edit:]
Initially I was sure it must be an update of 2013-06-21, but I have multiple frontends for my App, so it could be that I only used the android frontend during the previous days and always had the target window in foreground. Maybe I have to check the updates for the whole month :frowning:

It could be that the last good state was 2013-05-13 :frowning: Not not even that is sure (I save a limited number of N “not ok” screenshots, so it could be that the final N errors that day did by accident not include this problem)

Now also downgraded xorg-x11-server, but not the rest of the xorg packages. Still not better. Will try the rest of the xorg packages tomorrow.

Any hints what packages I should try to downgrade would be greatly appreciated.

> Any hints

when you have important applications that may be sensitive to lib,
kernel or other changes: TEST new upgrades, configuration changes and
etc on a sandbox machine–and then once the upgrades have proven to
work correctly update your production machine.


dd

Thanks DenverD,

Yes, will not do updates directly in the future. I just assumed that the X11/Imlib2 APIs are very stable, so I did not assume that such a thing could happen.

I now wrote a python script to undo updates done by zypper, but for some of them zypper says it does not find a provider of the previous version :frowning: Problem still not solved.

If anybody is interested in the script I will upload it somewhere.

On 06/25/2013 03:46 PM, devnoob wrote:
> but for some of them zypper says it does not find a provider of the
> previous version

that means the previous version was installed from an rpm file which
is not in the currently enabled repos…maybe you disabled it or ??

or maybe the previous verstion was installed from source tarball(s)
and locally compiled–because zypper hasn’t be ‘taught’ how to find
the source, compile and install (it only knows to look in enabled
repos for ready to install rpm files)…

well, let me say this: all of oss, non-oss and install iso images
never change–so, if the standard repos are enabled, the now missing
vendor/repo just needs to be tracked down and enabled…


dd
http://tinyurl.com/DD-Caveat

The packages that failed to downgrade don’t seem relevant to my problem. Maybe I have to go back some more than currently 2013-05-13 (but from my logs this date should be ok).

I did exclude the following from downgrading, maybe I should check those too (kernel-default, kernel-firmware, kernel-default-devel, kernel-desktop-devel, kernel-desktop, kernel-devel).

This are the packages that did not downgrade:


No provider of 'fuse-devel <= 2.9.0-6.6' found.
No provider of 'gstreamer-0_10-plugins-ugly-orig-addon <= 0.10.19-10.22' found.
No provider of 'k3b-codecs <= 2.0.2-15.40' found.
No provider of 'k3b <= 2.0.2-15.40' found.
No provider of 'libcdio13 <= 0.83.git-6.3' found.
No provider of 'libnewt0_52 <= 0.52.14-5.5' found.
No provider of 'libulockmgr1 <= 2.9.0-6.6' found.
No provider of 'libvlc5 <= 2.0.6-123.1' found.
No provider of 'libvlccore5 <= 2.0.6-123.1' found.
No provider of 'libxine2-codecs <= 1.2.2-83.2' found.
No provider of 'llvm-clang-devel <= 3.2-2.1' found.
No provider of 'llvm-clang <= 3.2-2.1' found.
No provider of 'llvm-devel <= 3.2-2.1' found.
No provider of 'llvm <= 3.2-2.1' found.
No provider of 'mysql-community-server-errormessages <= 5.5.28-1.2' found.
No provider of 'newt-devel <= 0.52.14-5.5' found.
No provider of 'newt <= 0.52.14-5.5' found.
No provider of 'patterns-openSUSE-kde4_pure <= 12.3-7.7.1' found.
No provider of 'pkcs11-helper-devel <= 1.09-1.6' found.
No provider of 'python-dulwich <= 0.8.6-1.2' found.
No provider of 'python-urwid <= 1.1.0-1.2' found.
No provider of 'realcrypt <= 7.0a-3.26' found.
No provider of 'slang-devel <= 2.2.4-3.7' found.
No provider of 'tcpd <= 7.6-875.6' found.
No provider of 'unrar <= 4.2.4-1.10' found.
No provider of 'vlc-codecs <= 2.0.6-123.1' found.
No provider of 'vlc-noX <= 2.0.6-123.1' found.
No provider of 'vlc-qt <= 2.0.6-123.1' found.
No provider of 'vlc <= 2.0.6-123.1' found.
No provider of 'yudit <= 2.9.2-4.6' found.

I don’t get it. Downgraded kernel stuff too. Still not working. Will now go back one month more, but I assume this will also not help. Could it be some config change that is not undone by a package downgrade? It’s a riddle for me.

:):good::cool:
On the last test it worked again!!! It seems to be some setting for the window manager. On the desktop effects tab it said that OpenGL detection was turned off because of crashes caused by it. This tab is now gone after reactivating it. It’s now working again and I will now undo all the 1561 package downgrades I did :slight_smile:

Thanks DenverD for the support.

> Thanks DenverD for the support.

hmmmm…not sure i did anything which lead to your new smile!
but, happy that you found a solution.


dd

Mental support is important.

Here a python script to undo zypper updates:

Zypper Rollback (undo updates on Linux):

Undo updates based on the log in /var/log/zypp/history.

Usage:
python undo_updates.py <file_to_undo> <file_zypper_history> -i <include_file> | -e <exclude_file>] [doIt]
With include_file, only packages mentioned there are rolled back.
Only with parameter ‘doIt’ the actions are generated.
All files must have zypper history format, looking like that:
2013-05-10 18:14:12|install|xorg-x11-server|7.6_1.13.2-1.5.1|x86_64||repo-update|ddb4d57…4d|

So cut out the part from the history file you like to undo, and pass it as <file_to_undo>. You can pass an optional file what to include (e.g. only libX11,…) or what to exclude (e.g. kernel-default). All files must have the zypper history format (so create them per copy past and/or grep from the history file).
With the final argument ‘doIt’ it will output the zypper command to use for you. Without it it will output a list with format ‘package_name, go_back_to_version,
[list newer versions installed since go_back_to_version]‘ to better check that what is happening is what you want.

zypper_undo_updates_python_script