Commit 689e9725d080f889461ea89afb607a7b49c78b13
Fix QX11Embed* with x86_64 by reading prop_return as long.
Even though the _XEMBED_INFO property uses 32 bit values,
prop_return has 64-bit padded values in 64-bit applications,
see man XChangeProperty. Without this fix the XEMBED client
will read XEMBED_MAPPED wrong and unmap (hide) itself.
| |   |
| 826 | 826 | &actual_format_return, &nitems_return, |
| 827 | 827 | &bytes_after_return, &prop_return) == Success) { |
| 828 | 828 | if (nitems_return > 1) { |
| if (((int * )prop_return)[1] & XEMBED_MAPPED) { |
| if (((long * )prop_return)[1] & XEMBED_MAPPED) { |
| 830 | 830 | XMapWindow(x11Info().display(), internalWinId()); |
| 831 | 831 | } else { |
| 832 | 832 | XUnmapWindow(x11Info().display(), internalWinId()); |
| … | … | |
| 1670 | 1670 | // Clients with the _XEMBED_INFO property are XEMBED clients. |
| 1671 | 1671 | clientIsXEmbed = true; |
| 1672 | 1672 | |
| unsigned int *p = (unsigned int *)prop_return; |
| long *p = (long *)prop_return; |
| 1674 | 1674 | if (nitems_return >= 2) |
| clientversion = p[0]; |
| clientversion = (unsigned int)p[0]; |
| 1676 | 1676 | } |
| 1677 | 1677 | |
| 1678 | 1678 | XFree(prop_return); |