…n according to callgrind)
…ion that belong to the XExposeEvent event type. These fields are not valid for XVisibilityEvents and contain garbage values. Remove the code that accessed these fields. The XExposeEvent already has its own function containing the exact same code.
… calculated a new width for windows that had a negative origin (that is, windows partially off the desktop to the left). The function subtracted twice the window offset from the width. To be correct this function needed to keep track of the old and new window positions and just subtract the difference. It turns out none of this was necessary. X will handle windows placed partially off-screen and draw them correctly, just as it does for windows dragged partially off the screen to the left. Removing this function fixed a number of drawing issues including tool tips being incorrectly drawn and windows not being drawn correctly after they'd been placed partially off-screen to the right.
…p failed, we leaked property memory for workspace attributes. Added check in case returned desktop number is greater than number of workspaces.
Added -lrt which is a required library for the sem_*() functions Fixed xf_window.c to not return null for zero-width windows - rather coerce values to be valid as was already being done for height and width. This fixes intermittent crashs on Solars and Linux.