mirror of
https://github.com/brl/mutter.git
synced 2024-11-30 20:01:00 -05:00
8beef8ccd0
We checked that the content size was appropriately painted in the stage, but didn't take into account that the size of the sampled texture region, meaning that when stage views were scaled, we'd think that we would draw a texture scaled, as e.g. a 200x200 sized texture with buffer scale 2 would have the size 100x100. When stage views were not scaled, we'd apply a geometry scale meaning it'd end up as 200x200 anyway, thus pass the check, but when stage views are scaled, it'd still be painted as a 100x100 shaped texture on the stage, thus failing the are-we-unscaled test. Fix this by comparing the transformed paint size with the sampled size, instead of the paint size again, when checking whether we are being painted scaled or not. For example, when stage views are scaled, our 200x200 buffer with buffer scale 2, thus content size 100x100 will transform to a 200x200 paint command, thus passing the test. For non-scaled stage views, our 200x200 buffer with buffer scale 2 thus content size 100x100 will also transform into a 200x200 paint command, and will also pass the check, as the texture sample region is still 200x200. Fixes: https://gitlab.gnome.org/GNOME/mutter/issues/804 https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1124
41 lines
1.8 KiB
C
41 lines
1.8 KiB
C
/* -*- mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; -*- */
|
|
/*
|
|
* Utilities for use with Clutter
|
|
*
|
|
* Copyright 2010 Red Hat, Inc.
|
|
*
|
|
* This program is free software; you can redistribute it and/or
|
|
* modify it under the terms of the GNU General Public License as
|
|
* published by the Free Software Foundation; either version 2 of the
|
|
* License, or (at your option) any later version.
|
|
*
|
|
* This program is distributed in the hope that it will be useful, but
|
|
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
* General Public License for more details.
|
|
*
|
|
* You should have received a copy of the GNU General Public License
|
|
* along with this program; if not, see <http://www.gnu.org/licenses/>.
|
|
*/
|
|
|
|
#ifndef __META_CLUTTER_UTILS_H__
|
|
#define __META_CLUTTER_UTILS_H__
|
|
|
|
#include "clutter/clutter.h"
|
|
|
|
gboolean meta_actor_vertices_are_untransformed (graphene_point3d_t *verts,
|
|
float widthf,
|
|
float heightf,
|
|
int *x_origin,
|
|
int *y_origin);
|
|
|
|
gboolean meta_actor_painting_untransformed (CoglFramebuffer *fb,
|
|
int paint_width,
|
|
int paint_height,
|
|
int sample_widthf,
|
|
int sample_heightf,
|
|
int *x_origin,
|
|
int *y_origin);
|
|
|
|
#endif /* __META_CLUTTER_UTILS_H__ */
|