mirror of
https://gitlab.freedesktop.org/wlroots/wlroots.git
synced 2026-04-14 08:22:25 -04:00
ext-foreign-toplevel-handle-v1: use per-handle version.
the version of the list might not always be the same as the version of the handle, plus ext-foreign-toplevel-request-manager-v1 will need to create handle resources, using it's own resources, whose version might not match the handle as well Signed-off-by: Anna (navi) Figueiredo Gomes <navi@vlhl.dev>
This commit is contained in:
parent
2d5492c737
commit
a9511d0f89
2 changed files with 8 additions and 6 deletions
|
|
@ -32,6 +32,7 @@ struct wlr_ext_foreign_toplevel_handle_v1 {
|
||||||
struct wl_list resources; // wl_resource_get_link()
|
struct wl_list resources; // wl_resource_get_link()
|
||||||
struct wl_list link; // wlr_ext_foreign_toplevel_list_v1.toplevels
|
struct wl_list link; // wlr_ext_foreign_toplevel_list_v1.toplevels
|
||||||
|
|
||||||
|
uint32_t version;
|
||||||
char *title;
|
char *title;
|
||||||
char *app_id;
|
char *app_id;
|
||||||
char *identifier;
|
char *identifier;
|
||||||
|
|
@ -62,9 +63,8 @@ struct wlr_ext_foreign_toplevel_handle_v1 *wlr_ext_foreign_toplevel_handle_v1_cr
|
||||||
void wlr_ext_foreign_toplevel_handle_v1_destroy(
|
void wlr_ext_foreign_toplevel_handle_v1_destroy(
|
||||||
struct wlr_ext_foreign_toplevel_handle_v1 *toplevel);
|
struct wlr_ext_foreign_toplevel_handle_v1 *toplevel);
|
||||||
|
|
||||||
void wlr_ext_foreign_toplevel_handle_v1_update_state(
|
void wlr_ext_foreign_toplevel_handle_v1_update_state(struct wlr_ext_foreign_toplevel_handle_v1 *toplevel,
|
||||||
struct wlr_ext_foreign_toplevel_handle_v1 *toplevel,
|
const struct wlr_ext_foreign_toplevel_handle_v1_state *state, uint32_t version);
|
||||||
const struct wlr_ext_foreign_toplevel_handle_v1_state *state);
|
|
||||||
|
|
||||||
struct wlr_ext_foreign_toplevel_handle_v1 *wlr_ext_foreign_toplevel_handle_v1_from_resource(
|
struct wlr_ext_foreign_toplevel_handle_v1 *wlr_ext_foreign_toplevel_handle_v1_from_resource(
|
||||||
struct wl_resource *resource);
|
struct wl_resource *resource);
|
||||||
|
|
|
||||||
|
|
@ -10,6 +10,7 @@
|
||||||
#include "util/token.h"
|
#include "util/token.h"
|
||||||
|
|
||||||
#define FOREIGN_TOPLEVEL_LIST_V1_VERSION 1
|
#define FOREIGN_TOPLEVEL_LIST_V1_VERSION 1
|
||||||
|
#define FOREIGN_TOPLEVEL_HANDLE_V1_VERSION 1
|
||||||
|
|
||||||
static const struct ext_foreign_toplevel_handle_v1_interface toplevel_handle_impl;
|
static const struct ext_foreign_toplevel_handle_v1_interface toplevel_handle_impl;
|
||||||
|
|
||||||
|
|
@ -117,8 +118,7 @@ static struct wl_resource *create_toplevel_resource_for_resource(
|
||||||
struct wl_resource *list_resource) {
|
struct wl_resource *list_resource) {
|
||||||
struct wl_client *client = wl_resource_get_client(list_resource);
|
struct wl_client *client = wl_resource_get_client(list_resource);
|
||||||
struct wl_resource *resource = wl_resource_create(client,
|
struct wl_resource *resource = wl_resource_create(client,
|
||||||
&ext_foreign_toplevel_handle_v1_interface,
|
&ext_foreign_toplevel_handle_v1_interface, toplevel->version, 0);
|
||||||
wl_resource_get_version(list_resource), 0);
|
|
||||||
if (!resource) {
|
if (!resource) {
|
||||||
wl_client_post_no_memory(client);
|
wl_client_post_no_memory(client);
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
@ -148,13 +148,15 @@ static void toplevel_send_details_to_toplevel_resource(
|
||||||
|
|
||||||
struct wlr_ext_foreign_toplevel_handle_v1 *
|
struct wlr_ext_foreign_toplevel_handle_v1 *
|
||||||
wlr_ext_foreign_toplevel_handle_v1_create(struct wlr_ext_foreign_toplevel_list_v1 *list,
|
wlr_ext_foreign_toplevel_handle_v1_create(struct wlr_ext_foreign_toplevel_list_v1 *list,
|
||||||
const struct wlr_ext_foreign_toplevel_handle_v1_state *state) {
|
const struct wlr_ext_foreign_toplevel_handle_v1_state *state, uint32_t version) {
|
||||||
|
assert(version <= FOREIGN_TOPLEVEL_HANDLE_V1_VERSION);
|
||||||
struct wlr_ext_foreign_toplevel_handle_v1 *toplevel = calloc(1, sizeof(*toplevel));
|
struct wlr_ext_foreign_toplevel_handle_v1 *toplevel = calloc(1, sizeof(*toplevel));
|
||||||
if (!toplevel) {
|
if (!toplevel) {
|
||||||
wlr_log(WLR_ERROR, "failed to allocate memory for toplevel handle");
|
wlr_log(WLR_ERROR, "failed to allocate memory for toplevel handle");
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
toplevel->version = version;
|
||||||
toplevel->identifier = calloc(TOKEN_SIZE, sizeof(char));
|
toplevel->identifier = calloc(TOKEN_SIZE, sizeof(char));
|
||||||
if (toplevel->identifier == NULL) {
|
if (toplevel->identifier == NULL) {
|
||||||
wlr_log(WLR_ERROR, "failed to allocate memory for toplevel identifier");
|
wlr_log(WLR_ERROR, "failed to allocate memory for toplevel identifier");
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue