1.3.0 has been released. master now represents the current state of
development towards the next feature release 1.4.0.
Bugfixes for 1.3 will happen in the 1.3.x branch.
Compared to earlier version bumps we bump a lot more files because of
we produce more artifacts; overlay process, dll and exe split, etc.
This should have happened right after the 1.3.x branch was split off.
This fixes a crash in libmumble's library constructor when built against
the musl libc.
The code that locates libc's dlsym(3) relied on addresses in dynamic
entries in the link map returned by dlopen(3) to always be absolute.
This seems to be specific to glibc though, so add a glibc feature test.
This commit changes various pri and pro files to always prepend
the global build output directory (which can be either 'release'
or 'debug', depending on the current build configuration).
Otherwise, if a library that we build ourselves, such as -lspeex in
CONFIG+=bundled-speex, is also available in one of the other lib dirs,
we can't be sure that the one in our build output directory will be used.
This is a problem on FreeBSD, where we add /usr/local/lib
to the QMAKE_LIBDIR in compiler.pri. That directory might contain
its own -lspeex.
With this change, we now prefer libraries in our build output directory
to system libraries.
This ensures we use the Elf_Sym type instead of Elf64_Sym.
This makes the FreeBSD-specific code work on both 32-bit
and 64-bit targets.
Fixesmumble-voip/mumble#2122
World of Warcraft masks all colors via glColorMaskIndexedEXT(0, 0, 0, 0, 0)
before we draw our overlay.
This broke overlay rendering on OS X when shadow quality was set
to anything greater than low.
This commit ensures that we allow drawing of colors to the main
framebuffer -- so we can draw the overlay properly.
Fixesmumble-voip/mumble#1010Fixesmumble-voip/mumble#1561
Refactor the code to find the RTLD's dlsym() symbol into a function,
find_odlsym(). Implement a FreeBSD-specific version of the code.
Verified against 'glxgears'.
You cannot query for GLX_WIDTH and GLX_HEIGHT using glXQueryDrawable in Mesa.
It simply fails with an error, and crashes the program:
X Error of failed request: GLXBadDrawable
Major opcode of failed request: 156 (GLX)
Minor opcode of failed request: 29 (X_GLXGetDrawableAttributes)
Serial number of failed request: 41
Current serial number in output stream: 41
The old check to only allow using glXQueryDrawable using GLX > 1.2
presumably worked for older Mesa versions, but now, Mesa advertises
GLX > 1.2.
That makes the overlay practically unusable when using Mesa.
This commit changes the code path to detect Mesa instead of GLX > 1.2,
and makes the overlay work correctly on Mesa once again.
Linking the overlay library with '-z now' requires all target
processes to have libGL symbols in them at load time.
If it doesn't, the program will not start at all.
Instead, explicitly use '-z lazy' to defer libGL symbol resolution
until first use, which is never for non-libGL users.
If the XDG_RUNTIME_DIR environment variable is present the overlay
pipe and RPC socket will be created at..
$XDG_RUNTIME_DIR/MumbleSocket
$XDG_RUNTIME_DIR/MumbleOverlayPipe
This commit removes macx/overlay and merges
the OS X overlay into the Unix overlay in
overlay_gl.
Most of the overlay logic is exactly the same,
with most of the differences being in the
initialization code and the addition of few new
messages for the interactive client-in-overlay
feature that the OS X overlay suports.
The initialization code is factored out into
init_unix.c for Unix-likes and init_mac.c
for OS X.
These init files are #included by overlay.c.
That is, they're not separate translation
units. Doing it this way cuts down on the
total LOC count and overall complexity of the
code.
The interactive overlay support is ported
directly from the OS X overlay. It's mostly
a matter of supporting a few new message types:
OVERLAY_MSGTYPE_PID and OVERLAY_MSGTYPE_INTERACTIVE.
The overlay_gl.pro file in this commit is mostly
just a combination of the .pro files of the two
overlays, with a minor difference in the CFLAGS
for the OS X overlay. In old OS X overlay, the
overlay had an ".m" file extension, signalling
that it is an Objective-C source file to the
C compiler. Since the combined overlay has a
".c" extension, "-x objective-c" is added to
CFLAGS on OS X to tell the compiler to compile
the overlay as Objective-C code.
This is a fix for the OpenGL overlay which disables
and enables the vertex attrib arrays inside drawContext.
The problem it fixes is that some games leave some of
the arrays enabled between frames, which I think
(not an OpenGL expert) causes the input to the vertex
shader to essentially be arbitrary.