wlmaker
Loading...
Searching...
No Matches
Classes | Functions | Variables
toplevel.c File Reference
#include "toplevel.h"
#include <libbase/libbase.h>
#include <libbase/signal.h>
#include <stdlib.h>
#include <string.h>
#include "wlclient/wlclient.h"
#include "ext-foreign-toplevel-list-v1-client-protocol.h"
Include dependency graph for toplevel.c:

Classes

struct  wlmdock_toplevel_tracker
 
struct  wlmdock_toplevel_handle
 
struct  wlmdock_toplevel_app_ids
 

Functions

static void _wlmdock_toplevel_setup_foreign_toplevel_list (void *bound_interface_ptr, void *userdata_ptr)
 
static void _wlmdock_toplevel_handle_destroy_dlnode (bs_dllist_node_t *dlnode_ptr, void *ud_ptr)
 
static int _wlmdock_toplevel_app_id_cmp (const bs_avltree_node_t *node_ptr, const void *key_ptr)
 
static void _wlmdock_toplevel_tracker_foreign_toplevel_list_toplevel (void *data, struct ext_foreign_toplevel_list_v1 *ext_foreign_toplevel_list_v1, struct ext_foreign_toplevel_handle_v1 *toplevel)
 
static void _wlmdock_toplevel_tracker_foreign_toplevel_list_finished (void *data, struct ext_foreign_toplevel_list_v1 *ext_foreign_toplevel_list_v1)
 
static void _wlmdock_toplevel_tracker_foreign_toplevel_handle_closed (void *data, struct ext_foreign_toplevel_handle_v1 *ext_foreign_toplevel_handle_v1)
 
static void _wlmdock_toplevel_tracker_foreign_toplevel_handle_done (void *data, struct ext_foreign_toplevel_handle_v1 *ext_foreign_toplevel_handle_v1)
 
static void _wlmdock_toplevel_tracker_foreign_toplevel_handle_title (void *data, struct ext_foreign_toplevel_handle_v1 *ext_foreign_toplevel_handle_v1, const char *title)
 
static void _wlmdock_toplevel_tracker_foreign_toplevel_handle_app_id (void *data, struct ext_foreign_toplevel_handle_v1 *ext_foreign_toplevel_handle_v1, const char *app_id)
 
static void _wlmdock_toplevel_tracker_foreign_toplevel_handle_identifier (void *data, struct ext_foreign_toplevel_handle_v1 *ext_foreign_toplevel_handle_v1, const char *identifier)
 
struct wlmdock_toplevel_tracker * wlmdock_toplevel_tracker_create (void)
 
void wlmdock_toplevel_tracker_destroy (struct wlmdock_toplevel_tracker *tracker_ptr)
 
bool wlmdock_toplevel_register_ext_foreign_toplevel_list (wlmcl_client_t *client_ptr, struct wlmdock_toplevel_tracker *tracker_ptr)
 
struct wlmdock_toplevel_tracker_events * wlmdock_toplevel_tracker_events (struct wlmdock_toplevel_tracker *tracker_ptr)
 
bool wlmdock_toplevel_tracker_register_app_id (struct wlmdock_toplevel_tracker *tracker_ptr, struct wlmdock_toplevel_handle *handle_ptr)
 
void wlmdock_toplevel_tracker_unregister_app_id (struct wlmdock_toplevel_tracker *tracker_ptr, struct wlmdock_toplevel_handle *handle_ptr)
 
bs_dllist_t * wlmdock_toplevel_tracker_app_id_handles (struct wlmdock_toplevel_tracker *tracker_ptr, const char *app_id_ptr)
 
struct wlmdock_toplevel_handle * wlmdock_toplevel_handle_create (struct wlmdock_toplevel_tracker *tracker_ptr)
 
void wlmdock_toplevel_handle_destroy (struct wlmdock_toplevel_handle *handle_ptr)
 
bool wlmdock_toplevel_handle_set_app_id (struct wlmdock_toplevel_handle *handle_ptr, const char *app_id_ptr)
 
bool wlmdock_toplevel_handle_set_title (struct wlmdock_toplevel_handle *handle_ptr, const char *title_ptr)
 
bool wlmdock_toplevel_handle_set_identifier (struct wlmdock_toplevel_handle *handle_ptr, const char *identifier_ptr)
 
static void _wlmdock_toplevel_test_tracker (bs_test_t *test_ptr)
 
static void _wlmdock_toplevel_test_handle (bs_test_t *test_ptr)
 

Variables

static const struct ext_foreign_toplevel_list_v1_listener _wlmdock_toplevel_tracker_ext_foreign_toplevel_list_v1_listener
 
static const struct ext_foreign_toplevel_handle_v1_listener _wlmdock_toplevel_tracker_ext_foreign_toplevel_handle_v1_listener
 
static const bs_test_case_t _wlmdock_toplevel_test_cases []
 
const bs_test_set_t wlmdock_toplevel_test_set
 

Detailed Description

Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at

https://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.

Function Documentation

◆ _wlmdock_toplevel_app_id_cmp()

int _wlmdock_toplevel_app_id_cmp ( const bs_avltree_node_t *  node_ptr,
const void *  key_ptr 
)
static

◆ _wlmdock_toplevel_handle_destroy_dlnode()

void _wlmdock_toplevel_handle_destroy_dlnode ( bs_dllist_node_t *  dlnode_ptr,
void *  ud_ptr 
)
static

Dtor for toplevel handle. Callback to bs_dllist_for_each.

◆ _wlmdock_toplevel_setup_foreign_toplevel_list()

void _wlmdock_toplevel_setup_foreign_toplevel_list ( void *  bound_interface_ptr,
void *  userdata_ptr 
)
static

Registration callback for wlmcl_client_register_interface.

◆ _wlmdock_toplevel_test_handle()

void _wlmdock_toplevel_test_handle ( bs_test_t *  t)
static

Tests handle setup and teardown.

◆ _wlmdock_toplevel_test_tracker()

void _wlmdock_toplevel_test_tracker ( bs_test_t *  t)
static

Tests tracker.

◆ _wlmdock_toplevel_tracker_foreign_toplevel_handle_app_id()

void _wlmdock_toplevel_tracker_foreign_toplevel_handle_app_id ( void *  data,
struct ext_foreign_toplevel_handle_v1 *  ext_foreign_toplevel_handle_v1,
const char *  app_id 
)
static

Sets the app ID for this toplevel.

◆ _wlmdock_toplevel_tracker_foreign_toplevel_handle_closed()

void _wlmdock_toplevel_tracker_foreign_toplevel_handle_closed ( void *  data,
struct ext_foreign_toplevel_handle_v1 *  ext_foreign_toplevel_handle_v1 
)
static

The toplevel has been closed. Good to destroy.

◆ _wlmdock_toplevel_tracker_foreign_toplevel_handle_done()

void _wlmdock_toplevel_tracker_foreign_toplevel_handle_done ( void *  data,
struct ext_foreign_toplevel_handle_v1 *  ext_foreign_toplevel_handle_v1 
)
static

All information for this toplevel was sent. Until it changes again.

◆ _wlmdock_toplevel_tracker_foreign_toplevel_handle_identifier()

void _wlmdock_toplevel_tracker_foreign_toplevel_handle_identifier ( void *  data,
struct ext_foreign_toplevel_handle_v1 *  ext_foreign_toplevel_handle_v1,
const char *  identifier 
)
static

Sets the identifier for this toplevel.

◆ _wlmdock_toplevel_tracker_foreign_toplevel_handle_title()

void _wlmdock_toplevel_tracker_foreign_toplevel_handle_title ( void *  data,
struct ext_foreign_toplevel_handle_v1 *  ext_foreign_toplevel_handle_v1,
const char *  title 
)
static

Sets the title for this toplevel.

◆ _wlmdock_toplevel_tracker_foreign_toplevel_list_finished()

void _wlmdock_toplevel_tracker_foreign_toplevel_list_finished ( void *  data,
struct ext_foreign_toplevel_list_v1 *  ext_foreign_toplevel_list_v1 
)
static

Compositor is finished with the toplevel list. Good to destroy.

◆ _wlmdock_toplevel_tracker_foreign_toplevel_list_toplevel()

void _wlmdock_toplevel_tracker_foreign_toplevel_list_toplevel ( void *  data,
struct ext_foreign_toplevel_list_v1 *  ext_foreign_toplevel_list_v1,
struct ext_foreign_toplevel_handle_v1 *  toplevel 
)
static

A new toplevel is created.

◆ wlmdock_toplevel_handle_create()

struct wlmdock_toplevel_handle * wlmdock_toplevel_handle_create ( struct wlmdock_toplevel_tracker *  tracker_ptr)

Creates a toplevel handle.

Parameters
tracker_ptr
Returns
Pointer to the handle, or NULL on error.

◆ wlmdock_toplevel_handle_destroy()

void wlmdock_toplevel_handle_destroy ( struct wlmdock_toplevel_handle *  handle_ptr)

Destroys the toplevel handle.

Parameters
handle_ptr

◆ wlmdock_toplevel_handle_set_app_id()

bool wlmdock_toplevel_handle_set_app_id ( struct wlmdock_toplevel_handle *  handle_ptr,
const char *  app_id_ptr 
)

Sets (or clears) the app id of the toplevel.

Parameters
handle_ptr
app_id_ptrMay be NULL.
Returns
true on success.

◆ wlmdock_toplevel_handle_set_identifier()

bool wlmdock_toplevel_handle_set_identifier ( struct wlmdock_toplevel_handle *  handle_ptr,
const char *  identifier_ptr 
)

Sets (or clears) the identifier of the toplevel.

Parameters
handle_ptr
identifier_ptrOnce set, the identifier must not be changed.
Returns
true on success.

◆ wlmdock_toplevel_handle_set_title()

bool wlmdock_toplevel_handle_set_title ( struct wlmdock_toplevel_handle *  handle_ptr,
const char *  title_ptr 
)

Sets (or clears) the title of the toplevel.

Parameters
handle_ptr
title_ptrMay be NULL.
Returns
true on success.

◆ wlmdock_toplevel_register_ext_foreign_toplevel_list()

bool wlmdock_toplevel_register_ext_foreign_toplevel_list ( wlmcl_client_t *  client_ptr,
struct wlmdock_toplevel_tracker *  tracker_ptr 
)

Registers an ext-foreign-toplevel-list-v1 interface for the tracker.

Parameters
client_ptr
tracker_ptr
Returns
true on success.

◆ wlmdock_toplevel_tracker_app_id_handles()

bs_dllist_t * wlmdock_toplevel_tracker_app_id_handles ( struct wlmdock_toplevel_tracker *  tracker_ptr,
const char *  app_id_ptr 
)

Returns wlmdock_toplevel_app_ids::toplevel_handles for app_id_ptr.

Parameters
tracker_ptr
app_id_ptr
Returns
The list of toplevel handles, or NULL if no such app id is tracked.

◆ wlmdock_toplevel_tracker_create()

struct wlmdock_toplevel_tracker * wlmdock_toplevel_tracker_create ( void  )

Creates the toplevel tracker.

Returns
Pointer to the toplevel tracker, or NULL on error.

◆ wlmdock_toplevel_tracker_destroy()

void wlmdock_toplevel_tracker_destroy ( struct wlmdock_toplevel_tracker *  tracker_ptr)

Destroys the toplevel tracker.

Parameters
tracker_ptr

◆ wlmdock_toplevel_tracker_events()

◆ wlmdock_toplevel_tracker_register_app_id()

bool wlmdock_toplevel_tracker_register_app_id ( struct wlmdock_toplevel_tracker *  tracker_ptr,
struct wlmdock_toplevel_handle *  handle_ptr 
)

Registers the handle for the app_id tracker.

Parameters
tracker_ptr
handle_ptrRequires wlmdock_toplevel_handle::app_id_ptr to be set.
Returns
true on success.

◆ wlmdock_toplevel_tracker_unregister_app_id()

void wlmdock_toplevel_tracker_unregister_app_id ( struct wlmdock_toplevel_tracker *  tracker_ptr,
struct wlmdock_toplevel_handle *  handle_ptr 
)

Unregisters the handle from the app_id tracker.

Parameters
tracker_ptr
handle_ptrRequires wlmdock_toplevel_handle::app_id_ptr to be set.

Variable Documentation

◆ _wlmdock_toplevel_test_cases

const bs_test_case_t _wlmdock_toplevel_test_cases[]
static
Initial value:
= {
{ true, "tracker", _wlmdock_toplevel_test_tracker },
{ true, "handle", _wlmdock_toplevel_test_handle },
}
static void _wlmdock_toplevel_test_tracker(bs_test_t *test_ptr)
Definition toplevel.c:525
static void _wlmdock_toplevel_test_handle(bs_test_t *test_ptr)
Definition toplevel.c:540

Unit test cases.

◆ _wlmdock_toplevel_tracker_ext_foreign_toplevel_handle_v1_listener

const struct ext_foreign_toplevel_handle_v1_listener _wlmdock_toplevel_tracker_ext_foreign_toplevel_handle_v1_listener
static
Initial value:
= {
}
static void _wlmdock_toplevel_tracker_foreign_toplevel_handle_app_id(void *data, struct ext_foreign_toplevel_handle_v1 *ext_foreign_toplevel_handle_v1, const char *app_id)
Definition toplevel.c:486
static void _wlmdock_toplevel_tracker_foreign_toplevel_handle_title(void *data, struct ext_foreign_toplevel_handle_v1 *ext_foreign_toplevel_handle_v1, const char *title)
Definition toplevel.c:474
static void _wlmdock_toplevel_tracker_foreign_toplevel_handle_done(void *data, struct ext_foreign_toplevel_handle_v1 *ext_foreign_toplevel_handle_v1)
Definition toplevel.c:465
static void _wlmdock_toplevel_tracker_foreign_toplevel_handle_closed(void *data, struct ext_foreign_toplevel_handle_v1 *ext_foreign_toplevel_handle_v1)
Definition toplevel.c:454
static void _wlmdock_toplevel_tracker_foreign_toplevel_handle_identifier(void *data, struct ext_foreign_toplevel_handle_v1 *ext_foreign_toplevel_handle_v1, const char *identifier)
Definition toplevel.c:498

Handlers for ext_foreign_toplevel_handle_v1

◆ _wlmdock_toplevel_tracker_ext_foreign_toplevel_list_v1_listener

const struct ext_foreign_toplevel_list_v1_listener _wlmdock_toplevel_tracker_ext_foreign_toplevel_list_v1_listener
static
Initial value:
= {
}
static void _wlmdock_toplevel_tracker_foreign_toplevel_list_toplevel(void *data, struct ext_foreign_toplevel_list_v1 *ext_foreign_toplevel_list_v1, struct ext_foreign_toplevel_handle_v1 *toplevel)
Definition toplevel.c:422
static void _wlmdock_toplevel_tracker_foreign_toplevel_list_finished(void *data, struct ext_foreign_toplevel_list_v1 *ext_foreign_toplevel_list_v1)
Definition toplevel.c:445

Handlers for ext_foreign_toplevel_list_v1

◆ wlmdock_toplevel_test_set

const bs_test_set_t wlmdock_toplevel_test_set
Initial value:
= BS_TEST_SET(
true, "toplevel", _wlmdock_toplevel_test_cases)
static const bs_test_case_t _wlmdock_toplevel_test_cases[]
Definition toplevel.c:514

Unit test set for toplevel.