[PATCH] wscreensaver: get decorations back
Kristian Høgsberg
krh at bitplanet.net
Tue Jan 17 07:59:45 PST 2012
On Tue, Jan 17, 2012 at 9:10 AM, Pekka Paalanen <ppaalanen at gmail.com> wrote:
> In the great toytoolkit widget revolution, wscreensaver demo mode lost
> its window decorations. Bring them back.
Oh, this is for the standalone case? Yeah, I think forgot that one, thanks.
Kristian
> Signed-off-by: Pekka Paalanen <ppaalanen at gmail.com>
> ---
> clients/wscreensaver.c | 61 ++++++++++++++++++-----------------------------
> 1 files changed, 23 insertions(+), 38 deletions(-)
>
> diff --git a/clients/wscreensaver.c b/clients/wscreensaver.c
> index a66cc8b..27364f0 100644
> --- a/clients/wscreensaver.c
> +++ b/clients/wscreensaver.c
> @@ -69,9 +69,7 @@ frame_callback(void *data, struct wl_callback *callback, uint32_t time)
> struct ModeInfo *mi = data;
>
> window_schedule_redraw(mi->window);
> -
> - if (callback)
> - wl_callback_destroy(callback);
> + wl_callback_destroy(callback);
> }
>
> static const struct wl_callback_listener listener = {
> @@ -172,62 +170,49 @@ errout:
> }
>
> static struct ModeInfo *
> -create_modeinfo(struct wscreensaver *wscr, struct window *window)
> +create_wscreensaver_instance(struct wscreensaver *screensaver,
> + struct wl_output *output, int width, int height)
> {
> + static int instance;
> struct ModeInfo *mi;
> struct rectangle drawarea;
> - static int instance;
>
> mi = calloc(1, sizeof *mi);
> if (!mi)
> return NULL;
>
> - window_get_allocation(window, &drawarea);
> -
> - mi->priv = wscr;
> - mi->eglctx = EGL_NO_CONTEXT;
> -
> - mi->window = window;
> - mi->widget = window_add_widget(window, mi);
> - widget_set_redraw_handler(mi->widget, redraw_handler);
> -
> - mi->instance_number = instance++; /* XXX */
> - mi->width = drawarea.width;
> - mi->height = drawarea.height;
> -
> - return mi;
> -}
> -
> -static struct ModeInfo *
> -create_wscreensaver_instance(struct wscreensaver *screensaver,
> - struct wl_output *output, int width, int height)
> -{
> - struct ModeInfo *mi;
> - struct window *window;
> -
> - window = window_create(screensaver->display, width, height);
> - if (!window) {
> + mi->window = window_create(screensaver->display, width, height);
> + if (!mi->window) {
> fprintf(stderr, "%s: creating a window failed.\n", progname);
> + free(mi);
> return NULL;
> }
>
> - window_set_transparent(window, 0);
> - window_set_title(window, progname);
> + window_set_transparent(mi->window, 0);
> + window_set_title(mi->window, progname);
>
> if (screensaver->interface) {
> - window_set_custom(window);
> + window_set_custom(mi->window);
> + mi->widget = window_add_widget(mi->window, mi);
> screensaver_set_surface(screensaver->interface,
> - window_get_wl_shell_surface(window),
> + window_get_wl_shell_surface(mi->window),
> output);
> + } else {
> + mi->widget = frame_create(mi->window, mi);
> }
> + widget_set_redraw_handler(mi->widget, redraw_handler);
>
> - mi = create_modeinfo(screensaver, window);
> - if (!mi)
> - return NULL;
> + mi->priv = screensaver;
> + mi->eglctx = EGL_NO_CONTEXT;
> + mi->instance_number = instance++; /* XXX */
> +
> + widget_get_allocation(mi->widget, &drawarea);
> + mi->width = drawarea.width;
> + mi->height = drawarea.height;
>
> screensaver->plugin->init(mi);
>
> - frame_callback(mi, NULL, 0);
> + window_schedule_resize(mi->window, width, height);
> return mi;
> }
>
> --
> 1.7.3.4
>
More information about the wayland-devel
mailing list