mirror of
https://gitlab.freedesktop.org/wlroots/wlroots.git
synced 2025-11-02 09:01:38 -05:00
Generalize DPMS, remove DRM refs from example
This commit is contained in:
parent
03c9b46034
commit
fee409bd0a
10 changed files with 65 additions and 50 deletions
|
|
@ -4,8 +4,9 @@
|
|||
#include <time.h>
|
||||
#include <wayland-server.h>
|
||||
#include <GLES3/gl3.h>
|
||||
#include <wlr/backend/drm.h>
|
||||
#include <wlr/backend.h>
|
||||
#include <wlr/session.h>
|
||||
#include <wlr/wayland.h>
|
||||
#include <wlr/common/list.h>
|
||||
|
||||
struct state {
|
||||
|
|
@ -40,7 +41,6 @@ void output_frame(struct wl_listener *listener, void *data) {
|
|||
if (s->color[s->dec] < 0.0f) {
|
||||
s->color[inc] = 1.0f;
|
||||
s->color[s->dec] = 0.0f;
|
||||
|
||||
s->dec = inc;
|
||||
}
|
||||
|
||||
|
|
@ -75,15 +75,23 @@ int timer_done(void *data) {
|
|||
return 1;
|
||||
}
|
||||
|
||||
int dpms_on(void *data) {
|
||||
struct wlr_backend *backend = data;
|
||||
wlr_drm_backend_dpms(backend, false);
|
||||
int enable_outputs(void *data) {
|
||||
struct state *state = data;
|
||||
for (size_t i = 0; i < state->outputs->length; ++i) {
|
||||
struct output_state *ostate = state->outputs->items[i];
|
||||
struct wlr_output *output = ostate->output;
|
||||
wlr_output_enable(output, true);
|
||||
}
|
||||
return 1;
|
||||
}
|
||||
|
||||
int dpms_off(void *data) {
|
||||
struct wlr_backend *backend = data;
|
||||
wlr_drm_backend_dpms(backend, true);
|
||||
int disable_outputs(void *data) {
|
||||
struct state *state = data;
|
||||
for (size_t i = 0; i < state->outputs->length; ++i) {
|
||||
struct output_state *ostate = state->outputs->items[i];
|
||||
struct wlr_output *output = ostate->output;
|
||||
wlr_output_enable(output, false);
|
||||
}
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
|
@ -116,7 +124,7 @@ int main() {
|
|||
return 1;
|
||||
}
|
||||
|
||||
struct wlr_backend *wlr = wlr_drm_backend_create(display, session);
|
||||
struct wlr_backend *wlr = wlr_backend_autocreate(display, session);
|
||||
wl_signal_add(&wlr->events.output_add, &state.output_add);
|
||||
wl_signal_add(&wlr->events.output_remove, &state.output_remove);
|
||||
if (!wlr || !wlr_backend_init(wlr)) {
|
||||
|
|
@ -126,14 +134,14 @@ int main() {
|
|||
bool done = false;
|
||||
struct wl_event_source *timer = wl_event_loop_add_timer(event_loop,
|
||||
timer_done, &done);
|
||||
struct wl_event_source *timer_dpms_on = wl_event_loop_add_timer(event_loop,
|
||||
dpms_on, wlr);
|
||||
struct wl_event_source *timer_dpms_off = wl_event_loop_add_timer(event_loop,
|
||||
dpms_off, wlr);
|
||||
struct wl_event_source *timer_disable_outputs =
|
||||
wl_event_loop_add_timer(event_loop, disable_outputs, &state);
|
||||
struct wl_event_source *timer_enable_outputs =
|
||||
wl_event_loop_add_timer(event_loop, enable_outputs, &state);
|
||||
|
||||
wl_event_source_timer_update(timer, 20000);
|
||||
wl_event_source_timer_update(timer_dpms_on, 5000);
|
||||
wl_event_source_timer_update(timer_dpms_off, 10000);
|
||||
wl_event_source_timer_update(timer_disable_outputs, 5000);
|
||||
wl_event_source_timer_update(timer_enable_outputs, 10000);
|
||||
|
||||
while (!done) {
|
||||
wl_event_loop_dispatch(event_loop, 0);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue