Add changes from home.

Signed-off-by: Chris Michael <devilhorns@comcast.net>
This commit is contained in:
Chris Michael 2013-05-06 13:28:30 +01:00
parent d0022a7017
commit ce80e9fbc3
2 changed files with 51 additions and 1 deletions

View File

@ -5,8 +5,11 @@
static Eina_Bool _output_init(void);
static void _output_shutdown(E_Output_X11 *output);
static int _output_cb_frame(void *data);
static void _output_cb_repaint_start(E_Output *output);
static void _output_cb_repaint(E_Output *output, E_Region *damages);
static void _output_cb_destroy(E_Output *output);
static Eina_Bool _output_cb_window_destroy(void *data EINA_UNUSED, int type EINA_UNUSED, void *event);
static void _comp_cb_attach(E_Surface *es, struct wl_buffer *buffer);
/* local variables */
static E_Compositor_X11 *_e_x11_comp;
@ -41,6 +44,9 @@ e_modapi_init(E_Module *m)
goto comp_err;
}
/* set the compositor attach function */
_e_x11_comp->base.attach = _comp_cb_attach;
/* try to initialize output */
if (!_output_init())
{
@ -104,6 +110,7 @@ _output_init(void)
{
E_Output_X11 *output;
struct wl_event_loop *loop;
unsigned int mask;
/* try to allocate space for our output structure */
if (!(output = E_NEW(E_Output_X11, 1)))
@ -149,11 +156,25 @@ _output_init(void)
/* show the window */
ecore_x_window_show(output->win);
/* output->pmap = */
/* ecore_x_pixmap_new(output->win, output->mode.w, output->mode.h, */
/* ecore_x_window_depth_get(output->win)); */
/* output->gc = */
/* ecore_x_gc_new(output->pmap, (ECORE_X_GC_VALUE_MASK_PLANE_MASK | */
/* ECORE_X_GC_VALUE_MASK_FOREGROUND), &mask); */
/* ecore_x_window_pixmap_set(output->win, output->pmap); */
output->base.current = &output->mode;
output->base.original = output->base.current;
output->base.make = "e_wayland";
output->base.model = "none";
output->base.cb_destroy = _output_cb_destroy;
output->base.cb_repaint_start = _output_cb_repaint_start;
/* FIXME: Change this based on software/gl */
output->base.cb_repaint = _output_cb_repaint;
/* initialize base output */
e_output_init(&output->base, &_e_x11_comp->base, 0, 0,
@ -186,10 +207,25 @@ _output_cb_frame(void *data)
E_Output_X11 *output;
if (!(output = data)) return 1;
/* TODO: start repaint loop */
/* start the repaint loop */
_output_cb_repaint_start(output);
return 1;
}
static void
_output_cb_repaint_start(E_Output *output)
{
/* TODO */
}
static void
_output_cb_repaint(E_Output *output, E_Region *damages)
{
/* TODO */
}
static void
_output_cb_destroy(E_Output *output)
{
@ -200,6 +236,12 @@ _output_cb_destroy(E_Output *output)
/* remove the frame timer */
wl_event_source_remove(xout->frame_timer);
/* destroy the pixmap */
if (xout->pmap) ecore_x_pixmap_free(xout->pmap);
/* destroy the gc */
if (xout->gc) ecore_x_gc_free(xout->gc);
/* destroy the window */
if (xout->win) ecore_x_window_free(xout->win);
@ -234,3 +276,9 @@ _output_cb_window_destroy(void *data EINA_UNUSED, int type EINA_UNUSED, void *ev
return ECORE_CALLBACK_PASS_ON;
}
static void
_comp_cb_attach(E_Surface *es, struct wl_buffer *buffer)
{
printf("Wl_X11 Attach: %p\n", es);
}

View File

@ -19,6 +19,8 @@ struct _E_Output_X11
E_Output_Mode mode;
Ecore_X_Window win;
Ecore_X_Pixmap pmap;
Ecore_X_GC gc;
struct wl_event_source *frame_timer;
};