diff --git a/src/modules/evas/engines/drm/evas_drm.c b/src/modules/evas/engines/drm/evas_drm.c index a1b4c937b1..1d3c5f759c 100644 --- a/src/modules/evas/engines/drm/evas_drm.c +++ b/src/modules/evas/engines/drm/evas_drm.c @@ -3,10 +3,6 @@ #include #include -/* NB: REALLY hate to store this here, but sigaction signal handlers cannot - * pass any 'user data' to the signal handlers :( */ -static Evas_Engine_Info_Drm *siginfo; - static int _evas_drm_crtc_find(int fd, drmModeRes *res, drmModeConnector *conn) { @@ -66,112 +62,6 @@ _evas_drm_crtc_buffer_get(int fd, int crtc_id) return id; } -static void -_evas_drm_tty_sigusr1(int x EINA_UNUSED, siginfo_t *info EINA_UNUSED, void *data EINA_UNUSED) -{ - Evas_Engine_Info_Drm *einfo; - - DBG("Caught SIGUSR1"); - - if (!(einfo = siginfo)) return; - - /* TODO: set canvas to not render */ - - DBG("\tDrop Master & Release VT"); - - /* drop drm master */ - if (einfo->info.own_fd) - { - if (drmDropMaster(einfo->info.fd) != 0) - WRN("Could not drop drm master: %m"); - } - - /* release vt */ - if (einfo->info.own_tty) - { - if (ioctl(einfo->info.tty, VT_RELDISP, 1) < 0) - WRN("Could not release vt: %m"); - } -} - -static void -_evas_drm_tty_sigusr2(int x EINA_UNUSED, siginfo_t *info EINA_UNUSED, void *data EINA_UNUSED) -{ - Evas_Engine_Info_Drm *einfo; - - DBG("Caught SIGUSR2"); - - if (!(einfo = siginfo)) return; - - /* TODO: set canvas to render again */ - - DBG("\tAcquire VT & Set Master"); - - /* acquire vt */ - if (einfo->info.own_tty) - { - if (ioctl(einfo->info.tty, VT_RELDISP, VT_ACKACQ) < 0) - WRN("Could not acquire vt: %m"); - } - - /* set master */ - if (einfo->info.own_fd) - { - if (drmSetMaster(einfo->info.fd) != 0) - WRN("Could not set drm master: %m"); - } -} - -static Eina_Bool -_evas_drm_tty_setup(Evas_Engine_Info_Drm *info) -{ - struct vt_mode vtmode = { 0 }; - struct sigaction sig; - - /* check for valid tty */ - if (info->info.tty < 0) return EINA_FALSE; - -#if 0 - /* set vt to graphics mode */ - if (ioctl(info->info.tty, KDSETMODE, KD_GRAPHICS) < 0) - { - CRI("Could not set tty to graphics mode: %m"); - return EINA_FALSE; - } -#endif - - /* setup tty rel/acq signals */ - vtmode.mode = VT_PROCESS; - vtmode.waitv = 0; - vtmode.relsig = SIGUSR1; - vtmode.acqsig = SIGUSR2; - if (ioctl(info->info.tty, VT_SETMODE, &vtmode) < 0) - { - CRI("Could not set tty mode: %m"); - return EINA_FALSE; - } - - /* store info struct - * - * NB: REALLY hate to store this here, but sigaction signal handlers cannot - * pass any 'user data' to the signal handlers :( - */ - siginfo = info; - - /* setup signal handlers for above signals */ - sig.sa_sigaction = _evas_drm_tty_sigusr1; - sig.sa_flags = (SA_NODEFER | SA_SIGINFO | SA_RESTART); - sigemptyset(&sig.sa_mask); - sigaction(SIGUSR1, &sig, NULL); - - sig.sa_sigaction = _evas_drm_tty_sigusr2; - sig.sa_flags = (SA_NODEFER | SA_SIGINFO | SA_RESTART); - sigemptyset(&sig.sa_mask); - sigaction(SIGUSR2, &sig, NULL); - - return EINA_TRUE; -} - static void _evas_drm_outbuf_page_flip(int fd EINA_UNUSED, unsigned int seq EINA_UNUSED, unsigned int tv_sec EINA_UNUSED, unsigned int tv_usec EINA_UNUSED, void *data) { @@ -251,32 +141,6 @@ _evas_drm_outbuf_planes_setup(Outbuf *ob, drmModePlaneResPtr pres) return EINA_TRUE; } -Eina_Bool -evas_drm_init(Evas_Engine_Info_Drm *info) -{ - /* check for valid engine info */ - if (!info) return EINA_FALSE; - - setvbuf(stdout, NULL, _IONBF, 0); - - /* with the tty opened, we need to set it up */ - if (!_evas_drm_tty_setup(info)) - { - return EINA_FALSE; - } - - return EINA_TRUE; -} - -Eina_Bool -evas_drm_shutdown(Evas_Engine_Info_Drm *info) -{ - /* check for valid engine info */ - if (!info) return EINA_TRUE; - - return EINA_TRUE; -} - Eina_Bool evas_drm_outbuf_setup(Outbuf *ob) { diff --git a/src/modules/evas/engines/drm/evas_engine.c b/src/modules/evas/engines/drm/evas_engine.c index e76e179cb2..c6f20348dc 100644 --- a/src/modules/evas/engines/drm/evas_engine.c +++ b/src/modules/evas/engines/drm/evas_engine.c @@ -51,11 +51,6 @@ _output_setup(Evas_Engine_Info_Drm *info, int w, int h) info->info.own_tty = EINA_TRUE; info->info.tty = ecore_drm_tty_get(drm_dev); } - - /* try to init drm (this includes openening tty) */ - /* FIXME replace with ecore_drm_tty */ - if (!evas_drm_init(info)) - goto on_error; } /* try to allocate space for our render engine structure */ @@ -92,10 +87,6 @@ _output_setup(Evas_Engine_Info_Drm *info, int w, int h) ecore_drm_device_free(drm_dev); } - /* shutdown tty */ - /* FIXME use ecore_drm_tty */ - evas_drm_shutdown(info); - free(re); return NULL; } @@ -211,8 +202,6 @@ eng_output_free(void *data) ecore_drm_device_free(drm_dev); } - /* FIXME use ecore_drm_tty */ - evas_drm_shutdown(re->info); evas_render_engine_software_generic_clean(&re->generic); free(re); diff --git a/src/modules/evas/engines/drm/evas_engine.h b/src/modules/evas/engines/drm/evas_engine.h index b92a4cf6ec..0e7ae1c7a3 100644 --- a/src/modules/evas/engines/drm/evas_engine.h +++ b/src/modules/evas/engines/drm/evas_engine.h @@ -128,9 +128,6 @@ void evas_outbuf_update_region_push(Outbuf *ob, RGBA_Image *update, int x, int y void evas_outbuf_update_region_free(Outbuf *ob, RGBA_Image *update); void evas_outbuf_flush(Outbuf *ob, Tilebuf_Rect *rects, Evas_Render_Mode render_mode); -Eina_Bool evas_drm_init(Evas_Engine_Info_Drm *info); -Eina_Bool evas_drm_shutdown(Evas_Engine_Info_Drm *info); - Eina_Bool evas_drm_outbuf_setup(Outbuf *ob); void evas_drm_outbuf_framebuffer_set(Outbuf *ob, Buffer *buffer); Eina_Bool evas_drm_framebuffer_create(int fd, Buffer *buffer, int depth);