EAPI void * e_modapi_init(E_Module *m) { Ecore_Evas *ee; E_Screen *screen; E_Comp *comp; int w, h; printf("LOAD WL_FB MODULE\n"); /* try to init ecore_x */ if (!ecore_fb_init(NULL)) { fprintf(stderr, "Could not initialize ecore_fb"); return NULL; } ecore_fb_size_get(&w, &h); ee = ecore_evas_fb_new(NULL, 0, w, h); comp = e_comp_new(); comp->comp_type = E_PIXMAP_TYPE_WL; comp->ee = ee; if (!e_xinerama_fake_screens_exist()) { screen = E_NEW(E_Screen, 1); screen->escreen = screen->screen = 0; screen->x = 0; screen->y = 0; screen->w = w; screen->h = h; e_xinerama_screens_set(eina_list_append(NULL, screen)); } comp->man = e_manager_new(0, comp, w, h); e_comp_wl_init(); e_comp_canvas_init(comp); e_comp_canvas_fake_layers_init(comp); comp->pointer = e_pointer_canvas_new(comp->evas, 1); ecore_wl_init(NULL); ecore_wl_server_mode_set(1); return m; }
E_API void * e_modapi_init(E_Module *m) { Ecore_Evas *ee; E_Screen *screen; int w, h; printf("LOAD WL_FB MODULE\n"); /* try to init ecore_x */ if (!ecore_fb_init(NULL)) { fprintf(stderr, "Could not initialize ecore_fb"); return NULL; } ecore_fb_size_get(&w, &h); ee = ecore_evas_fb_new(NULL, 0, w, h); e_comp->ee = ee; if (!e_xinerama_fake_screens_exist()) { screen = E_NEW(E_Screen, 1); screen->escreen = screen->screen = 0; screen->x = 0; screen->y = 0; screen->w = w; screen->h = h; e_xinerama_screens_set(eina_list_append(NULL, screen)); } e_comp_wl_init(); e_comp_canvas_init(w, h); e_comp->pointer = e_pointer_canvas_new(e_comp->ee, EINA_TRUE); ecore_wl_init(NULL); ecore_wl_server_mode_set(1); return m; }
// TODO: Possible without #ifdef stuff? EvasWindowFB::EvasWindowFB( const Eflxx::Size &size, const char* display, int rotation ) : EvasWindow() { Dout( dc::notice, "EvasWindow::EvasWindowFB" ); Application::getInstance()->setMainWindow( this ); /*if ( ::getenv( "EFL_DISPLAY" ) ) display = ::getenv( "EFL_DISPLAY" ); if ( ::getenv( "EFL_WIDTH" ) ) size.width (atoi( ::getenv( "EFL_WIDTH" ) )); if ( ::getenv( "EFL_HEIGHT" ) ) size.height (atoi( ::getenv( "EFL_HEIGHT" ) )); if ( ::getenv( "EFL_ROTATION" ) ) rotation = atoi( ::getenv( "EFL_ROTATION" ) );*/ if ( display /*&& ::strstr( display, "/dev/fb" )*/ ) { #ifdef ENABLE_EFLPP_FB int fb_dev_fd = ::open( display, O_RDONLY ); if ( fb_dev_fd < 0 ) { fprintf(stderr,"Can't open display '%s': %s\n", display, strerror(errno)); exit( 1 ); } struct fb_var_screeninfo fb_vinfo; struct fb_fix_screeninfo fb_finfo; // read VScreen info from fb if ( ioctl( fb_dev_fd, FBIOGET_VSCREENINFO, &fb_vinfo ) ) { fprintf(stderr,"Can't get VSCREENINFO: %s\n", strerror(errno)); exit(1); } // readFScreen info from fb if ( ioctl( fb_dev_fd, FBIOGET_FSCREENINFO, &fb_finfo ) ) { fprintf(stderr,"Can't get FSCREENINFO: %s\n", strerror(errno)); exit(1); } Dout( dc::notice, "- using display '" << display << "' [" << fb_finfo.id << "] - " << fb_vinfo.xres << "x" << fb_vinfo.yres << "@" << rotation ); width = ( rotation % 180 ) ? fb_vinfo.yres : fb_vinfo.xres; height = ( rotation % 180 ) ? fb_vinfo.xres : fb_vinfo.yres; Dout( dc::notice, "- using size (after rotating) " << size.width () << "x" << size.height () ); #ifdef ECORE_FB_NO_ROTATION_BUG //FIXME EFL BUG: initial rotation is not taken into account for evas calculation _ee = ecore_evas_fb_new( const_cast<char*>( display ), rotation, 50, 50 ); #else _ee = ecore_evas_fb_new( const_cast<char*>( display ), 0, 50, 50 ); // start with rotation 0 to workaround bug #endif ecore_evas_fullscreen_set( _ee, 1 ); // fullscreen is default to get auto resize on changing rotation ecore_evas_rotation_set( _ee, rotation ); // force resize #else printf("FB engine not enabled\n"); #endif } ecore_evas_title_set( _ee, Application::getInstance()->getName().c_str() ); ecore_evas_borderless_set( _ee, 0 ); _canvas = Evasxx::Canvas::wrap (ecore_evas_get( _ee )); /* Set up magic object back link */ ecore_evas_data_set( _ee, "obj_c++", this ); /* Set up default callbacks */ setEventEnabled( Resize, true ); setEventEnabled( DeleteRequest, true ); }
bool ui_init(ePlayer *player) { int zero = 0; char buf[PATH_MAX]; debug(DEBUG_LEVEL_INFO, "Starting setup\n"); ecore_init(); ecore_evas_init(); edje_init(); ewl_init(&zero, NULL); ecore_event_handler_add(ECORE_EVENT_SIGNAL_EXIT, app_signal_exit, NULL); #ifdef HAVE_ECORE_EVAS_GL if (!strcasecmp(player->cfg.evas_engine, "gl")) { debug(DEBUG_LEVEL_INFO, "Starting EVAS GL X11\n"); player->gui.ee = ecore_evas_gl_x11_new(NULL, 0, 0, 0, 0, 0); } else #endif #ifdef HAVE_ECORE_EVAS_FB if (!strcasecmp(player->cfg.evas_engine, "fb")) { debug(DEBUG_LEVEL_INFO, "Starting EVAS FB\n"); player->gui.ee = ecore_evas_fb_new(NULL, 0, 0, 0); } else #endif { debug(DEBUG_LEVEL_INFO, "Starting EVAS X11\n"); player->gui.ee = ecore_evas_software_x11_new(NULL, 0, 0, 0, 0, 0); } if (!player->gui.ee) { debug(DEBUG_LEVEL_CRITICAL, "Cannot create Ecore Evas (using %s engine)\n", player->cfg.evas_engine); return false; } ecore_evas_title_set(player->gui.ee, "ePlayer"); ecore_evas_name_class_set(player->gui.ee, "ecore_test", "test_evas"); ecore_evas_borderless_set(player->gui.ee, 1); ecore_evas_shaped_set(player->gui.ee, 1); ecore_evas_callback_pre_render_set(player->gui.ee, cb_ee_pre_render); ecore_evas_callback_post_render_set(player->gui.ee, cb_ee_post_render); ecore_evas_callback_resize_set(player->gui.ee, cb_ee_resize); ecore_evas_show(player->gui.ee); player->gui.evas = ecore_evas_get(player->gui.ee); snprintf(buf, sizeof(buf), "%s/.e/apps/%s/fonts", getenv("HOME"), PACKAGE); evas_font_path_append(player->gui.evas, buf); evas_font_path_append(player->gui.evas, DATA_DIR "/fonts"); evas_font_path_append(player->gui.evas, "/usr/X11R6/lib/X11/fonts"); evas_font_path_append(player->gui.evas, "/usr/share/fonts"); if (!ui_init_dragger(player)) return false; return ui_init_edje(player, "eplayer"); }