Although very unlikely, the wl_compositor version might not support
wl_surface.set_buffer_scale while the wl_output emits a wl_output.scale
that is larger than 1. So for correctness, bail on changing the buffer
scale if we won't be able to set it later.
Windows now keep track of the monitors they are on, so we can calculate
the best scaling factor for them, by using the maximum of each of the
monitors.
The compositor scales down the buffer automatically when it is on a
lower density monitor, instead of the previous way where it was scaling
up the buffer on higher density monitors, which makes the application
look much better on those ones.
I haven't checked the math on this, but in playing with blending modes I noticed
that one of the rotated vertices appeared to be closer to the center of rotation
than the others. This adjustment makes it so they are all the same distance from
the center of rotation. If the center of rotation is conincident with the
triangle's center, then this will mean the triangle is equilateral, but I
haven't verified this, it just looked right from the rotations.
The auxiliary windows now reflect what is happening in the primary window.
Unfortunately, there is still a bug in the primary window code that affects
the orthographic projection. Basically, the object that is drawn is resized
along with the contents of the window instead of remaining a constant size
while the window is resized around it.
the position of a different window.
This illustrates the idea of filters; windows that draw their contents based
on the content of a different window (similar to what you'd see if you viewed
something through a colored filter). This works on OS X. Untested on other
platforms.
This is a minor variant of tests/threads.c that uses transparent windows. You
should be able to drag the windows around and see whatever is behind them.
Use platform prefix for files specific to that platform AND that have no
credible alternative API on that platform.
The exception is WinMM, which will be replaced before 3.2.