static void _ecore_evas_fullscreen_set(Ecore_Evas *ee, Eina_Bool on) { Eina_List *l; Ecore_Fb_Input_Device *dev; Ecore_Evas_Engine_FB_Data *idata = ee->engine.data; int resized = 0; if (((ee->prop.fullscreen) && (on)) || ((!ee->prop.fullscreen) && (!on))) return; if (on) { int w, h; idata->real_w = ee->w; idata->real_h = ee->h; w = ee->w; h = ee->h; ecore_fb_size_get(&w, &h); if ((w == 0) && (h == 0)) { w = ee->w; h = ee->h; } if ((w != ee->w) || (h != ee->h)) resized = 1; ee->w = w; ee->h = h; ee->req.w = ee->w; ee->req.h = ee->h; evas_output_size_set(ee->evas, ee->w, ee->h); evas_output_viewport_set(ee->evas, 0, 0, ee->w, ee->h); evas_damage_rectangle_add(ee->evas, 0, 0, ee->w, ee->h); } else { if ((idata->real_w != ee->w) || (idata->real_h != ee->h)) resized = 1; ee->w = idata->real_w; ee->h = idata->real_h; ee->req.w = ee->w; ee->req.h = ee->h; evas_output_size_set(ee->evas, ee->w, ee->h); evas_output_viewport_set(ee->evas, 0, 0, ee->w, ee->h); evas_damage_rectangle_add(ee->evas, 0, 0, ee->w, ee->h); } ee->prop.fullscreen = on; EINA_LIST_FOREACH(ecore_evas_input_devices, l, dev) ecore_fb_input_device_axis_size_set(dev, ee->w, ee->h); /* rescale the input device area */ if (resized) { if (ee->func.fn_resize) ee->func.fn_resize(ee); } }
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; }
static void _ecore_evas_mouse_move_process_fb(Ecore_Evas *ee, int x, int y) { const Efl_Input_Device *pointer; Ecore_Evas_Cursor *cursor; int fbw, fbh; ecore_fb_size_get(&fbw, &fbh); pointer = evas_default_device_get(ee->evas, EFL_INPUT_DEVICE_TYPE_MOUSE); pointer = evas_device_parent_get(pointer); cursor = eina_hash_find(ee->prop.cursors, &pointer); EINA_SAFETY_ON_NULL_RETURN(cursor); cursor->pos_x = x; cursor->pos_y = y; if (cursor->object) { evas_object_show(cursor->object); if (ee->rotation == 0) evas_object_move(cursor->object, x - cursor->hot.x, y - cursor->hot.y); else if (ee->rotation == 90) evas_object_move(cursor->object, (fbh - ee->h) + ee->h - y - 1 - cursor->hot.x, x - cursor->hot.y); else if (ee->rotation == 180) evas_object_move(cursor->object, (fbw - ee->w) + ee->w - x - 1 - cursor->hot.x, (fbh - ee->h) + ee->h - y - 1 - cursor->hot.y); else if (ee->rotation == 270) evas_object_move(cursor->object, y - cursor->hot.x, (fbw - ee->w) + ee->w - x - 1 - cursor->hot.y); } }