Also fill the center of parsed kernel with 1. This shouldn't change the
behavior of the old backends since they will modify the center of the
kernels.
Signed-off-by: Yuxuan Shui <yshuiv7@gmail.com>
glGetIntegerv(GL_NUM_EXTENSIONS) is only available since GL4.
(However glGetStringi(GL_EXTENSIONS) is available since GL3)
Signed-off-by: Yuxuan Shui <yshuiv7@gmail.com>
Currently compton handles window creation event by immediately query all
the information it needs and create a window struct with that
information. However, this is prone to race conditions.
In the future, we want to react to window creation event by creating a
placeholder in the window stack, and only query window information in a
critical section where the X server is grabbed by us.
This commit split struct win into two struct, one as placeholder, the
other for holding actual window information.
Signed-off-by: Yuxuan Shui <yshuiv7@gmail.com>
paint_preprocess calls redir_start if it decides to redirect the screen.
redir_start might change the state of the windows. For example, when the
image of the window fails to bind, redir_start sets the error flag. And
those state changes might exclude the window from being rendered. Thus,
paint_preprocess should be re-run to make sure the new states are
honoured.
Fixes a crash when window images fail to bind after redirecting.
Signed-off-by: Yuxuan Shui <yshuiv7@gmail.com>
Use a flag to mark whether the image needs update, and only update once
per frame.
Also refactor some common code into functions, and handle image errors
properly.
Signed-off-by: Yuxuan Shui <yshuiv7@gmail.com>
struct _glx_image_data needs to be freed even when refcount is not 0.
Also fixed a typo in glx_bind_pixmap.
Signed-off-by: Yuxuan Shui <yshuiv7@gmail.com>
Rectangle textures was used as a fallback when the driver doesn't
support non-power-of-two (NPOT) textures. Since we are using OpenGL 3.0 now,
which includes support for NPOT textures, we don't need this fallback
anymore.
Signed-off-by: Yuxuan Shui <yshuiv7@gmail.com>
blur_textures are not initialized when blur is disabled, but we still
try to resize them in gl_resize.
Don't do that.
Signed-off-by: Yuxuan Shui <yshuiv7@gmail.com>
Choose the best vsync method for the user, instead of asking them to
frustratingly try every one of the options to see what works.
With this commit, the `vsync` option will take only a boolean value.
Signed-off-by: Yuxuan Shui <yshuiv7@gmail.com>