don't create dm_show unless needed

This commit is contained in:
discomfitor 2013-10-20 16:06:19 +01:00
parent 131419bfbf
commit b68a721afe
1 changed files with 7 additions and 12 deletions

View File

@ -97,9 +97,7 @@ _ds_show(E_Desk *desk, int dx, int dy)
evas_object_show(ec->frame); evas_object_show(ec->frame);
} }
desk_show = desk; desk_show = desk;
/* create mirror for current desk */
dm_show = dm_add(desk);
evas_object_name_set(dm_show, "dm_show");
e_comp_shape_queue_block(e_comp_get(desk), 1); e_comp_shape_queue_block(e_comp_get(desk), 1);
/* guarantee that the user gets to see each flip /* guarantee that the user gets to see each flip
* at least once * at least once
@ -145,30 +143,30 @@ _ds_show(E_Desk *desk, int dx, int dy)
hy = desk->zone->y - desk->zone->h; hy = desk->zone->y - desk->zone->h;
break; break;
} }
dm_show = dm_add(desk);
evas_object_move(dm_show, x, y); evas_object_move(dm_show, x, y);
efx_move(dm_hide, EFX_EFFECT_SPEED_DECELERATE, EFX_POINT(hx, hy), 0.2, NULL, NULL); efx_move(dm_hide, EFX_EFFECT_SPEED_DECELERATE, EFX_POINT(hx, hy), 0.2, NULL, NULL);
efx_move(dm_show, EFX_EFFECT_SPEED_DECELERATE, EFX_POINT(desk->zone->x, desk->zone->y), 0.2, _ds_end, NULL); efx_move(dm_show, EFX_EFFECT_SPEED_DECELERATE, EFX_POINT(desk->zone->x, desk->zone->y), 0.2, _ds_end, NULL);
break; break;
case DS_FADE_OUT: case DS_FADE_OUT:
E_FREE_FUNC(dm_show, evas_object_del);
efx_fade(dm_hide, EFX_EFFECT_SPEED_LINEAR, EFX_COLOR(0, 0, 0), 0, 0.25, _ds_end, NULL); efx_fade(dm_hide, EFX_EFFECT_SPEED_LINEAR, EFX_COLOR(0, 0, 0), 0, 0.25, _ds_end, NULL);
break; break;
case DS_FADE_IN: case DS_FADE_IN:
E_FREE_FUNC(dm_hide, evas_object_del); E_FREE_FUNC(dm_hide, evas_object_del);
dm_show = dm_add(desk);
efx_fade(dm_show, EFX_EFFECT_SPEED_LINEAR, EFX_COLOR(0, 0, 0), 0, 0.0, NULL, NULL); efx_fade(dm_show, EFX_EFFECT_SPEED_LINEAR, EFX_COLOR(0, 0, 0), 0, 0.0, NULL, NULL);
efx_fade(dm_show, EFX_EFFECT_SPEED_LINEAR, EFX_COLOR(255, 255, 255), 255, 0.25, _ds_end, NULL); efx_fade(dm_show, EFX_EFFECT_SPEED_LINEAR, EFX_COLOR(255, 255, 255), 255, 0.25, _ds_end, NULL);
break; break;
case DS_BATMAN: case DS_BATMAN:
E_FREE_FUNC(dm_show, evas_object_del);
evas_object_raise(dm_hide); evas_object_raise(dm_hide);
efx_spin_start(dm_hide, 1080.0, NULL); efx_spin_start(dm_hide, 1080.0, NULL);
efx_zoom(dm_hide, EFX_EFFECT_SPEED_LINEAR, 1.0, 0.00001, NULL, 0.4, _ds_end, NULL); efx_zoom(dm_hide, EFX_EFFECT_SPEED_LINEAR, 1.0, 0.00001, NULL, 0.4, _ds_end, NULL);
break; break;
case DS_ZOOM_IN: case DS_ZOOM_IN:
dm_show = dm_add(desk);
efx_zoom(dm_show, EFX_EFFECT_SPEED_LINEAR, 0.000001, 1.0, NULL, 0.4, _ds_end, NULL); efx_zoom(dm_show, EFX_EFFECT_SPEED_LINEAR, 0.000001, 1.0, NULL, 0.4, _ds_end, NULL);
break; break;
case DS_ZOOM_OUT: case DS_ZOOM_OUT:
E_FREE_FUNC(dm_show, evas_object_del);
evas_object_raise(dm_hide); evas_object_raise(dm_hide);
efx_zoom(dm_hide, EFX_EFFECT_SPEED_LINEAR, 1.0, 0.0000001, NULL, 0.4, _ds_end, NULL); efx_zoom(dm_hide, EFX_EFFECT_SPEED_LINEAR, 1.0, 0.0000001, NULL, 0.4, _ds_end, NULL);
break; break;
@ -185,6 +183,7 @@ _ds_show(E_Desk *desk, int dx, int dy)
y = desk->zone->y + desk->zone->h; y = desk->zone->y + desk->zone->h;
else if (!dy) else if (!dy)
h = desk->zone->h; h = desk->zone->h;
dm_show = dm_add(desk);
o = evas_object_rectangle_add(e_comp_get(desk)->evas); o = evas_object_rectangle_add(e_comp_get(desk)->evas);
evas_object_geometry_set(o, x, y, w, h); evas_object_geometry_set(o, x, y, w, h);
evas_object_clip_set(dm_show, o); evas_object_clip_set(dm_show, o);
@ -193,12 +192,12 @@ _ds_show(E_Desk *desk, int dx, int dy)
efx_resize(o, EFX_EFFECT_SPEED_LINEAR, EFX_POINT(hx, hy), desk->zone->w, desk->zone->h, 0.4, _ds_end, NULL); efx_resize(o, EFX_EFFECT_SPEED_LINEAR, EFX_POINT(hx, hy), desk->zone->w, desk->zone->h, 0.4, _ds_end, NULL);
break; break;
case DS_ROTATE_OUT: case DS_ROTATE_OUT:
E_FREE_FUNC(dm_show, evas_object_del);
efx_move_circle(dm_hide, EFX_EFFECT_SPEED_LINEAR, EFX_POINT(desk->zone->x + (desk->zone->w / 2), desk->zone->y + (desk->zone->h / 2)), efx_move_circle(dm_hide, EFX_EFFECT_SPEED_LINEAR, EFX_POINT(desk->zone->x + (desk->zone->w / 2), desk->zone->y + (desk->zone->h / 2)),
720, 0.4, NULL, NULL); 720, 0.4, NULL, NULL);
efx_resize(dm_hide, EFX_EFFECT_SPEED_LINEAR, NULL, 1, 1, 0.4, _ds_end, NULL); efx_resize(dm_hide, EFX_EFFECT_SPEED_LINEAR, NULL, 1, 1, 0.4, _ds_end, NULL);
break; break;
case DS_ROTATE_IN: case DS_ROTATE_IN:
dm_show = dm_add(desk);
evas_object_resize(dm_show, 1, 1); evas_object_resize(dm_show, 1, 1);
efx_move_circle(dm_show, EFX_EFFECT_SPEED_LINEAR, EFX_POINT(desk->zone->x + (desk->zone->w / 2), desk->zone->y + (desk->zone->h / 2)), efx_move_circle(dm_show, EFX_EFFECT_SPEED_LINEAR, EFX_POINT(desk->zone->x + (desk->zone->w / 2), desk->zone->y + (desk->zone->h / 2)),
720, 0.4, NULL, NULL); 720, 0.4, NULL, NULL);
@ -210,7 +209,6 @@ _ds_show(E_Desk *desk, int dx, int dy)
Evas_Point exy; Evas_Point exy;
unsigned int i, num; unsigned int i, num;
E_FREE_FUNC(dm_show, evas_object_del);
num = (rand() % 4) + 2; num = (rand() % 4) + 2;
dmh = dm_hide; dmh = dm_hide;
@ -277,7 +275,6 @@ _ds_show(E_Desk *desk, int dx, int dy)
{desk->zone->x + (desk->zone->w * 2), desk->zone->y + (desk->zone->h * 2)} {desk->zone->x + (desk->zone->w * 2), desk->zone->y + (desk->zone->h * 2)}
}; };
E_FREE_FUNC(dm_show, evas_object_del);
dmh[0] = dm_hide; dmh[0] = dm_hide;
for (i = 0; i < 4; i++) for (i = 0; i < 4; i++)
{ {
@ -312,7 +309,6 @@ _ds_show(E_Desk *desk, int dx, int dy)
{desk->zone->x + (desk->zone->w / 2), desk->zone->y + (desk->zone->h / 2)} {desk->zone->x + (desk->zone->w / 2), desk->zone->y + (desk->zone->h / 2)}
}; };
E_FREE_FUNC(dm_show, evas_object_del);
dmh[0] = dm_hide; dmh[0] = dm_hide;
for (i = 0; i < 4; i++) for (i = 0; i < 4; i++)
{ {
@ -340,7 +336,6 @@ _ds_show(E_Desk *desk, int dx, int dy)
{ {
Evas_Object *clip; Evas_Object *clip;
E_FREE_FUNC(dm_show, evas_object_del);
clip = evas_object_rectangle_add(e_comp_get(desk)->evas); clip = evas_object_rectangle_add(e_comp_get(desk)->evas);
/* fit clipper to zone */ /* fit clipper to zone */
evas_object_geometry_set(clip, desk->zone->x, desk->zone->y, desk->zone->w, desk->zone->h); evas_object_geometry_set(clip, desk->zone->x, desk->zone->y, desk->zone->w, desk->zone->h);
@ -356,7 +351,6 @@ _ds_show(E_Desk *desk, int dx, int dy)
{ {
Evas_Object *clip; Evas_Object *clip;
E_FREE_FUNC(dm_show, evas_object_del);
clip = evas_object_rectangle_add(e_comp_get(desk)->evas); clip = evas_object_rectangle_add(e_comp_get(desk)->evas);
/* fit clipper to zone */ /* fit clipper to zone */
evas_object_geometry_set(clip, desk->zone->x, desk->zone->y, desk->zone->w, desk->zone->h); evas_object_geometry_set(clip, desk->zone->x, desk->zone->y, desk->zone->w, desk->zone->h);
@ -371,6 +365,7 @@ _ds_show(E_Desk *desk, int dx, int dy)
break; break;
default: break; default: break;
} }
if (dm_show) evas_object_name_set(dm_show, "dm_show");
} }
static void static void