mirror of
https://github.com/brl/mutter.git
synced 2024-11-24 00:50:42 -05:00
a5585327dc
When running Mutter under Cogl's KMS backend no cursor will be provided so instead this makes it so the cursor will be painted as a CoglTexture that gets moved in response to mouse motion events. The painting is done in a subclass of ClutterStage so that we can guarantee that the cursor will be painted on top of everything else. This patch adds support for the set_cursor method on the pointer interface so that clients can change the cursor image. The set_pointer method sets a surface and a hotspot position to use for the cursor image. The surface's buffer is converted to a CoglTexture and attached to a pipeline to paint directly via Cogl. If a new buffer is attached to the surface the image will be updated. The cursor reverts back to the default image whenever to the pointer focus is moved off of any surface. The image for the pointer is taken from X. It gets installed into a fixed data location for mutter.
51 lines
1.5 KiB
C
51 lines
1.5 KiB
C
/*
|
|
* Wayland Support
|
|
*
|
|
* Copyright (C) 2012 Intel Corporation
|
|
*
|
|
* 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, write to the Free Software
|
|
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
|
|
* 02111-1307, USA.
|
|
*/
|
|
|
|
#ifndef __META_WAYLAND_SEAT_H__
|
|
#define __META_WAYLAND_SEAT_H__
|
|
|
|
#include <wayland-server.h>
|
|
#include <xkbcommon/xkbcommon.h>
|
|
#include <clutter/clutter.h>
|
|
#include <glib.h>
|
|
|
|
#include "meta-wayland-private.h"
|
|
|
|
MetaWaylandSeat *
|
|
meta_wayland_seat_new (struct wl_display *display);
|
|
|
|
void
|
|
meta_wayland_seat_handle_event (MetaWaylandSeat *seat,
|
|
const ClutterEvent *event);
|
|
|
|
void
|
|
meta_wayland_seat_repick (MetaWaylandSeat *seat,
|
|
uint32_t time,
|
|
ClutterActor *actor);
|
|
|
|
void
|
|
meta_wayland_seat_update_sprite (MetaWaylandSeat *seat);
|
|
|
|
void
|
|
meta_wayland_seat_free (MetaWaylandSeat *seat);
|
|
|
|
#endif /* __META_WAYLAND_SEAT_H__ */
|