compositor: fix uniform handling for fade_output()
authorPekka Paalanen <ppaalanen@gmail.com>
Tue, 20 Dec 2011 14:38:25 +0000 (16:38 +0200)
committerKristian Høgsberg <krh@bitplanet.net>
Tue, 20 Dec 2011 15:59:39 +0000 (10:59 -0500)
commit3429a72597044a82f6ab2b4f5530f9489d6feff9
tree3ce6b6e4ecdf9ae08d66285030d66e5a9e4a7717
parentbbedd7e9d2e7409d3ca99a85eaf4bcc98957c425
compositor: fix uniform handling for fade_output()

fade_output() is strange in that it manufactures a wlsc_surface object
by hand, and then calls wlsc_surface_draw() on it.

Valgrind complained, that wlsc_surface_draw() accesses uninitialised
data: wlsc_surface::alpha. fade_output() forgets to set it.

Initialise surface.alpha in fade_output(). Specifically, set it to
compositor->current_alpha to deliberatly avoid the gluniform1f() call in
wlsc_surface_draw().

fade_output() binds a different GL shader program than
wlsc_surface_draw() expects. This program does not have a uniform called
"alpha", and the uniform location given in glUniform1f() is not for
this program anyway. A hint of that is the runtime error:
Mesa: User error: GL_INVALID_OPERATION in glUniform(type mismatch)

Fixing this seems to get rid of half a thousand of Valgrind errors, and
of course the Mesa user error.

Signed-off-by: Pekka Paalanen <ppaalanen@gmail.com>
compositor/compositor.c