wlmaker
Loading...
Searching...
No Matches
Classes | Functions | Variables
client.c File Reference
#include "libwlclient.h"
#include <errno.h>
#include <poll.h>
#include <signal.h>
#include <stdarg.h>
#include <sys/signalfd.h>
#include <wayland-client.h>
#include "wlmaker-icon-unstable-v1-client-protocol.h"
#include "xdg-shell-client-protocol.h"
Include dependency graph for client.c:

Classes

struct  _wlclient_t
 
struct  wlclient_timer_t
 
struct  object_t
 

Functions

static void wl_to_bs_log (const char *fmt, va_list args)
 
static void handle_global_announce (void *data_ptr, struct wl_registry *wl_registry_ptr, uint32_t name, const char *interface_ptr, uint32_t version)
 
static void handle_global_remove (void *data_ptr, struct wl_registry *registry, uint32_t name)
 
static wlclient_timer_twlc_timer_create (wlclient_t *client_ptr, uint64_t target_usec, wlclient_callback_t callback, void *callback_ud_ptr)
 
static void wlc_timer_destroy (wlclient_timer_t *timer_ptr)
 
wlclient_twlclient_create (const char *app_id_ptr)
 
void wlclient_destroy (wlclient_t *wlclient_ptr)
 
const wlclient_attributes_twlclient_attributes (const wlclient_t *wlclient_ptr)
 
void wlclient_run (wlclient_t *wlclient_ptr)
 
bool wlclient_register_timer (wlclient_t *wlclient_ptr, uint64_t target_usec, wlclient_callback_t callback, void *callback_ud_ptr)
 

Variables

static const struct wl_registry_listener registry_listener
 
static const object_t objects []
 

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

◆ handle_global_announce()

void handle_global_announce ( void * data_ptr,
struct wl_registry * wl_registry_ptr,
uint32_t name,
const char * interface_name_ptr,
uint32_t version )
static

Handles the announcement of a global object.

Called by struct wl_registry_listener global callback, invoked to notify clients of global objects.

Parameters
data_ptrPoints to a wlclient_t.
wl_registry_ptrThe struct wl_registry this is invoked for.
nameNumeric name of the global object.
interface_name_ptrName of the interface implemented by the object.
versionInterface version.

◆ handle_global_remove()

void handle_global_remove ( void * data_ptr,
struct wl_registry * wl_registry_ptr,
uint32_t name )
static

Handles the removal of a wayland global object.

Called by struct wl_registry_listener global_remove, invoked to notify clients of removed global objects.

Parameters
data_ptrPoints to a wlclient_t.
wl_registry_ptrThe struct wl_registry this is invoked for.
nameNumeric name of the global object.

◆ wl_to_bs_log()

void wl_to_bs_log ( const char * fmt_ptr,
va_list args )
static

Redirects a wayland log call into s_log.

Parameters
fmt_ptr
args

◆ wlc_timer_create()

wlclient_timer_t * wlc_timer_create ( wlclient_t * client_ptr,
uint64_t target_usec,
wlclient_callback_t callback,
void * callback_ud_ptr )
static

Creates a timer and registers it with the client.

Parameters
client_ptr
target_usec
callback
callback_ud_ptr
Returns
A pointer to the created timer, or NULL on error. The pointer must be destroyed by wlc_timer_destroy.

◆ wlc_timer_destroy()

void wlc_timer_destroy ( wlclient_timer_t * timer_ptr)
static

Destroys the timer. Note: The timer will NOT be unregistered first.

Parameters
timer_ptr

◆ wlclient_attributes()

const wlclient_attributes_t * wlclient_attributes ( const wlclient_t * wlclient_ptr)

Gets the client attributes.

Parameters
wlclient_ptr
Returns
A pointer to the attributes.

◆ wlclient_create()

wlclient_t * wlclient_create ( const char * app_id_ptr)

Creates a wayland client for simple buffer interactions.

Parameters
app_id_ptrApplication ID or NULL if not set.
Returns
The client state, or NULL on error. The state needs to be free'd via wlclient_destroy.

◆ wlclient_destroy()

void wlclient_destroy ( wlclient_t * wlclient_ptr)

Destroys the wayland client, as created by wlclient_create.

Parameters
wlclient_ptr

◆ wlclient_register_timer()

bool wlclient_register_timer ( wlclient_t * wlclient_ptr,
uint64_t target_usec,
wlclient_callback_t callback,
void * callback_ud_ptr )

Registers a timer with the client.

Once the system clock reaches (or has passed) target_usec, callback will be called with the provided arguments. This is a one-time registration. For repeated calls, clients need to re-register.

Parameters
wlclient_ptr
target_usec
callback
callback_ud_ptr
Returns
true on success.

◆ wlclient_run()

void wlclient_run ( wlclient_t * wlclient_ptr)

Runs the client's mainloop.

Parameters
wlclient_ptr

Variable Documentation

◆ objects

const object_t objects[]
static
Initial value:
= {
{ &wl_compositor_interface, 4,
offsetof(wlclient_attributes_t, wl_compositor_ptr) },
{ &wl_shm_interface, 1,
offsetof(wlclient_attributes_t, wl_shm_ptr) },
{ &xdg_wm_base_interface, 1,
offsetof(wlclient_attributes_t, xdg_wm_base_ptr) },
{ &zwlmaker_icon_manager_v1_interface, 1,
offsetof(wlclient_attributes_t, icon_manager_ptr) },
{ NULL, 0, 0 }
}
Definition libwlclient.h:47

List of wayland objects we want to bind to.

◆ registry_listener

const struct wl_registry_listener registry_listener
static
Initial value:
= {
.global_remove = handle_global_remove,
}
static void handle_global_announce(void *data_ptr, struct wl_registry *wl_registry_ptr, uint32_t name, const char *interface_ptr, uint32_t version)
Definition client.c:393
static void handle_global_remove(void *data_ptr, struct wl_registry *registry, uint32_t name)
Definition client.c:442

Listener for the registry, taking note of registry updates.