Replace list_t with wl_list in wlr_output

Signed-off-by: Heghedus Razvan <heghedus.razvan@gmail.com>
master
Heghedus Razvan 7 years ago
parent c03e774636
commit 1d716241af

@ -782,11 +782,7 @@ void wlr_drm_scan_connectors(struct wlr_drm_backend *drm) {
mode->wlr_mode.width, mode->wlr_mode.height, mode->wlr_mode.width, mode->wlr_mode.height,
mode->wlr_mode.refresh); mode->wlr_mode.refresh);
if (list_add(wlr_conn->output.modes, mode) == -1) { wl_list_insert(&wlr_conn->output.modes, &mode->wlr_mode.link);
wlr_log_errno(L_ERROR, "Allocation failed");
free(mode);
continue;
}
} }
wlr_conn->state = WLR_DRM_CONN_NEEDS_MODESET; wlr_conn->state = WLR_DRM_CONN_NEEDS_MODESET;

@ -427,8 +427,10 @@ static void output_add_notify(struct wl_listener *listener, void *data) {
wlr_log(L_DEBUG, "Output '%s' added", output->name); wlr_log(L_DEBUG, "Output '%s' added", output->name);
wlr_log(L_DEBUG, "%s %s %"PRId32"mm x %"PRId32"mm", output->make, output->model, wlr_log(L_DEBUG, "%s %s %"PRId32"mm x %"PRId32"mm", output->make, output->model,
output->phys_width, output->phys_height); output->phys_width, output->phys_height);
if (output->modes->length > 0) { if (wl_list_length(&output->modes) > 0) {
wlr_output_set_mode(output, output->modes->items[0]); struct wlr_output_mode *mode = NULL;
wl_container_of((&output->modes)->prev, mode, link);
wlr_output_set_mode(output, mode);
} }
struct output_state *ostate = calloc(1, sizeof(struct output_state)); struct output_state *ostate = calloc(1, sizeof(struct output_state));
clock_gettime(CLOCK_MONOTONIC, &ostate->last_frame); clock_gettime(CLOCK_MONOTONIC, &ostate->last_frame);

@ -2,13 +2,13 @@
#define WLR_TYPES_WLR_OUTPUT_H #define WLR_TYPES_WLR_OUTPUT_H
#include <wayland-server.h> #include <wayland-server.h>
#include <wlr/util/list.h>
#include <stdbool.h> #include <stdbool.h>
struct wlr_output_mode { struct wlr_output_mode {
uint32_t flags; // enum wl_output_mode uint32_t flags; // enum wl_output_mode
int32_t width, height; int32_t width, height;
int32_t refresh; // mHz int32_t refresh; // mHz
struct wl_list link;
}; };
struct wlr_output_impl; struct wlr_output_impl;
@ -32,7 +32,7 @@ struct wlr_output {
float transform_matrix[16]; float transform_matrix[16];
/* Note: some backends may have zero modes */ /* Note: some backends may have zero modes */
list_t *modes; struct wl_list modes;
struct wlr_output_mode *current_mode; struct wlr_output_mode *current_mode;
struct { struct {

@ -166,9 +166,11 @@ void output_add_notify(struct wl_listener *listener, void *data) {
wlr_log(L_DEBUG, "%s %s %"PRId32"mm x %"PRId32"mm", wlr_log(L_DEBUG, "%s %s %"PRId32"mm x %"PRId32"mm",
wlr_output->make, wlr_output->model, wlr_output->make, wlr_output->model,
wlr_output->phys_width, wlr_output->phys_height); wlr_output->phys_width, wlr_output->phys_height);
if (wlr_output->modes->length > 0) { if (wl_list_length(&wlr_output->modes) > 0) {
wlr_output_set_mode(wlr_output, wlr_output->modes->items[0]); struct wlr_output_mode *mode = NULL;
} mode = wl_container_of((&wlr_output->modes)->prev, mode, link);
wlr_output_set_mode(wlr_output, mode);
}
struct roots_output *output = calloc(1, sizeof(struct roots_output)); struct roots_output *output = calloc(1, sizeof(struct roots_output));
clock_gettime(CLOCK_MONOTONIC, &output->last_frame); clock_gettime(CLOCK_MONOTONIC, &output->last_frame);

@ -26,8 +26,8 @@ static void wl_output_send_to_resource(struct wl_resource *resource) {
output->make, output->model, output->transform); output->make, output->model, output->transform);
} }
if (version >= WL_OUTPUT_MODE_SINCE_VERSION) { if (version >= WL_OUTPUT_MODE_SINCE_VERSION) {
for (size_t i = 0; i < output->modes->length; ++i) { struct wlr_output_mode *mode;
struct wlr_output_mode *mode = output->modes->items[i]; wl_list_for_each(mode, &output->modes, link) {
// TODO: mode->flags should just be preferred // TODO: mode->flags should just be preferred
uint32_t flags = mode->flags; uint32_t flags = mode->flags;
if (output->current_mode == mode) { if (output->current_mode == mode) {
@ -37,7 +37,7 @@ static void wl_output_send_to_resource(struct wl_resource *resource) {
mode->width, mode->height, mode->refresh); mode->width, mode->height, mode->refresh);
} }
if (output->modes->length == 0) { if (wl_list_length(&output->modes) == 0) {
// Output has no mode, send the current width/height // Output has no mode, send the current width/height
wl_output_send_mode(resource, WL_OUTPUT_MODE_CURRENT, wl_output_send_mode(resource, WL_OUTPUT_MODE_CURRENT,
output->width, output->height, 0); output->width, output->height, 0);
@ -296,7 +296,7 @@ bool wlr_output_move_cursor(struct wlr_output *output, int x, int y) {
void wlr_output_init(struct wlr_output *output, void wlr_output_init(struct wlr_output *output,
const struct wlr_output_impl *impl) { const struct wlr_output_impl *impl) {
output->impl = impl; output->impl = impl;
output->modes = list_create(); wl_list_init(&output->modes);
output->transform = WL_OUTPUT_TRANSFORM_NORMAL; output->transform = WL_OUTPUT_TRANSFORM_NORMAL;
output->scale = 1; output->scale = 1;
wl_signal_init(&output->events.frame); wl_signal_init(&output->events.frame);
@ -320,11 +320,11 @@ void wlr_output_destroy(struct wlr_output *output) {
wlr_texture_destroy(output->cursor.texture); wlr_texture_destroy(output->cursor.texture);
wlr_renderer_destroy(output->cursor.renderer); wlr_renderer_destroy(output->cursor.renderer);
for (size_t i = 0; output->modes && i < output->modes->length; ++i) { struct wlr_output_mode *mode, *tmp_mode;
struct wlr_output_mode *mode = output->modes->items[i]; wl_list_for_each_safe(mode, tmp_mode, &output->modes, link) {
free(mode); free(mode);
} }
list_free(output->modes); wl_list_remove(&output->modes);
if (output->impl && output->impl->destroy) { if (output->impl && output->impl->destroy) {
output->impl->destroy(output); output->impl->destroy(output);
} else { } else {

Loading…
Cancel
Save