📄 mosaic_tree.c
字号:
app_mem_deallocate(country_code);
country_data->country_code_list = NULL;
break;
}
else
{
app_mem_deallocate(country_code);
country_code = country_code->next;
}
}/*end of the while-loop*/
}
}/*end of the while-loop*/
}
return SUCCESS;
}
/*
*delete the multilingual ifo area structure in the page node
*/
error_t ms_del_info_area(info_dis_area_data_t *info_dis_area)
{
if(info_dis_area != NULL)
{
while(1)
{
if(info_dis_area->next == NULL)
{
app_mem_deallocate(info_dis_area);
info_dis_area = NULL;
break;
}
else
{
app_mem_deallocate(info_dis_area);
info_dis_area = info_dis_area->next;
}
}
}
return SUCCESS;
}
/*
*delete the multilingual_text structure in the data tree
*/
error_t ms_del_multi_text(multilingual_text_t *multilingual_text)
{
if(multilingual_text != NULL)
{
while(1)
{
if(multilingual_text->next == NULL)
{
if(multilingual_text->text_content != NULL)
{
app_mem_deallocate(multilingual_text->text_content);
multilingual_text->text_content = NULL;
}
app_mem_deallocate(multilingual_text);
multilingual_text = NULL;
break;
}
else
{
if(multilingual_text->text_content != NULL)
{
app_mem_deallocate(multilingual_text->text_content);
multilingual_text->text_content = NULL;
}
app_mem_deallocate(multilingual_text);
multilingual_text = multilingual_text->next;
}
}
}
return SUCCESS;
}
/*
*delete the multilingual_texts_list structure in the data tree
*/
error_t ms_del_texts_list(multilingual_texts_list_t *tag_texts_list)
{
error_t error;
if(tag_texts_list != NULL)
{
while(1)
{
if(tag_texts_list->next == NULL)
{
APP_TRACE("\n**************** delete a multilingual_texts_list in the page ##########\n");
if(tag_texts_list->texts_list != NULL)
error = ms_del_multi_text(tag_texts_list->texts_list);
app_mem_deallocate(tag_texts_list);
tag_texts_list = NULL;
break;
}
else
{
APP_TRACE("\n**************** delete a multilingual_texts_list in the page ##########\n");
if(tag_texts_list->texts_list != NULL)
error = ms_del_multi_text(tag_texts_list->texts_list);
app_mem_deallocate(tag_texts_list);
tag_texts_list = tag_texts_list->next;
}
}
}
return SUCCESS;
}
error_t mosaic_delete_cell_node( page_node_t *parent_page_node )
{
cell_node_t *cell_node;
error_t error;
DBG_ASSERT( parent_page_node != NULL );
DBG_ASSERT(parent_page_node -> cell_list);
cell_node = parent_page_node -> cell_list;
while(1)
{
if(cell_node->next == NULL)
{
if(cell_node->cell_data != NULL)
{
/*APP_TRACE("\n**************** delete a cell node ##########\n");*/
if(cell_node->cell_data->offers_data != NULL)
error = ms_del_authorized_offers(cell_node->cell_data->offers_data);
if(cell_node->cell_data->geo_zones_data != NULL)
error = ms_del_geo_zones(cell_node->cell_data->geo_zones_data);
if(cell_node->cell_data->country_data != NULL)
error = ms_del_country_data(cell_node->cell_data->country_data);
app_mem_deallocate(cell_node -> cell_data);
cell_node -> cell_data = NULL;
}
app_mem_deallocate(cell_node);
parent_page_node -> cell_list = NULL;
break;
}
else
{
if(cell_node->cell_data != NULL)
{
/*APP_TRACE("\n**************** delete a cell node ##########\n");*/
if(cell_node->cell_data->offers_data != NULL)
error = ms_del_authorized_offers(cell_node->cell_data->offers_data);
if(cell_node->cell_data->geo_zones_data != NULL)
error = ms_del_geo_zones(cell_node->cell_data->geo_zones_data);
if(cell_node->cell_data->country_data != NULL)
error = ms_del_country_data(cell_node->cell_data->country_data);
app_mem_deallocate(cell_node -> cell_data);
cell_node -> cell_data = NULL;
}
app_mem_deallocate(cell_node);
cell_node = cell_node->next;
}
}/*end of while-loop*/
return SUCCESS;
}
error_t mosaic_delete_page_node(mosaic_node_t *mosaic_bitree)
{
page_node_t *page_node;
error_t error;
DBG_ASSERT(mosaic_bitree != NULL);
DBG_ASSERT(mosaic_bitree -> page_list);
page_node = mosaic_bitree -> page_list;
while( TRUE )
{
if(page_node->next == NULL)
{
if(page_node -> cell_list != NULL)
{
error = mosaic_delete_cell_node(page_node);
}
if(page_node->page_data != NULL)
{
APP_TRACE("\n########## delete a page node [%d] ****************\n", page_node->page_data->page_id);
if(page_node->page_data->page_texts_list != NULL)
{
error = ms_del_texts_list(page_node->page_data->page_texts_list);
}
while(page_node->page_data->info_dis_area_num)
{
page_node->page_data->info_dis_area_num--;
if(page_node->page_data->info_position[page_node->page_data->info_dis_area_num].data_list != NULL)
{
error = ms_del_info_area(page_node->page_data->info_position[page_node->page_data->info_dis_area_num].data_list);
}
}/*end of while-loop*/
app_mem_deallocate(page_node -> page_data);
page_node -> page_data = NULL;
}
app_mem_deallocate(page_node);
mosaic_bitree -> page_list = NULL;
break;
}
else
{
if(page_node -> cell_list != NULL)
{
error = mosaic_delete_cell_node(page_node);
}
if(page_node->page_data != NULL)
{
APP_TRACE("\n########## delete a page node [%d] ****************\n", page_node->page_data->page_id);
if(page_node->page_data->page_texts_list != NULL)
{
error = ms_del_texts_list(page_node->page_data->page_texts_list);
}
while(page_node->page_data->info_dis_area_num)
{
page_node->page_data->info_dis_area_num--;
if(page_node->page_data->info_position[page_node->page_data->info_dis_area_num].data_list != NULL)
{
error = ms_del_info_area(page_node->page_data->info_position[page_node->page_data->info_dis_area_num].data_list);
}
}/*end of while-loop*/
app_mem_deallocate(page_node -> page_data);
page_node -> page_data = NULL;
}
app_mem_deallocate(page_node);
page_node = page_node->next;
}
}/*end of while-loop*/
return SUCCESS;
}
error_t mosaic_delete_mosaic_node(mosaic_node_t *mosaic_bitree)
{
uint8_t i;
error_t error;
if(mosaic_bitree/*mosaic_tree_data_t*/ == NULL)
{
return FAILURE;
}
else
{
DBG_ASSERT(mosaic_bitree != NULL);
while(TRUE)
{
if(mosaic_bitree -> page_list == NULL)
{
if(mosaic_bitree -> mosaic_data != NULL)
{
for(i=0;i<4;i++)
{
error = ms_del_multi_text(mosaic_bitree -> mosaic_data->mask_data[i].multi_mask_text_list);
}
app_mem_deallocate(mosaic_node_data);
mosaic_node_data = NULL;
mosaic_bitree -> mosaic_data = NULL;
}
break;
}
else
{
error = mosaic_delete_page_node(mosaic_bitree);
}
}/*end of while-loop*/
app_mem_deallocate(mosaic_bitree);
mosaic_tree_data_t = NULL;
mosaic_bitree = NULL;
}
return SUCCESS;
}
error_t mosaic_app_exit(cell_data_t *current_active_cell_info)
{
error_t error;
if(mosaic_tree_data_t == NULL)
{
return FAILURE;
}
ms_delete_focus(current_active_cell_info->x, current_active_cell_info->y,
current_active_cell_info->w, current_active_cell_info->h);
error = mosaic_delete_mosaic_node(mosaic_tree_data_t);
ss_service_notification(SS_NTF_EXIT_MOSAIC_STATE, NULL);
ss_unregister_callback(mosaic_ss_callback);
semaphore_delete(connect_ok);
connect_ok = NULL;
/*stop the M2V picture*/
STVID_DisableOutputWindow(/*VIDHndl*/VID_ViewPortHandle);
ext_mem_deallocate(ms_list.service);
ms_list.service = NULL;
/**/app_ca_display_enable(true);
#if 0
/*add by xhw*/
mosaic_palette_delete(g_mosaic_palette);
g_mosaic_palette = NULL;
/***********/
#endif
return SUCCESS;
}
error_t ms_find_multi_text(multilingual_text_t *multilingual_texts_list,
multilingual_text_t **tag_texts_list)
{ char code[3];
language_t language;
multilingual_text_t *multi;
language = sys_get_current_language();
if(language == UNRECOGNIZED_LANGUAGE)
{
APP_TRACE("\n mosaic unrecognized_language service name \n");
*tag_texts_list = multilingual_texts_list;
return FAILURE;
}
if(language == ENGLISH_LANGUAGE)
memcpy(code , "eng" , 3);
if(language == CHINESE_LANGUAGE)
memcpy(code , "chi" , 3);
if(strncmp((char *)(multilingual_texts_list->iso_639_language), code, 3) == 0)
{
*tag_texts_list = multilingual_texts_list;
}
else
{
while(1)
{
multi = multilingual_texts_list->next;
if(multi == NULL)
break;
if(strncmp((char *)(multi->iso_639_language), code, 3) == 0)
break;
if(multi->next == NULL)
break;
}
*tag_texts_list = multi;
}
return SUCCESS;
}
error_t ms_find_info_area(info_dis_area_data_t *multilingual_info_area,
info_dis_area_data_t **tag_info_area)
{ char code[3];
language_t language;
info_dis_area_data_t *multi;
if(multilingual_info_area == NULL)
return FAILURE;
language = sys_get_current_language();
if(language == UNRECOGNIZED_LANGUAGE)
{
APP_TRACE("\n mosaic unrecognized_language service name \n");
*tag_info_area = multilingual_info_area;
return FAILURE;
}
if(language == ENGLISH_LANGUAGE)
memcpy(code , "eng" , 3);
if(language == CHINESE_LANGUAGE)
memcpy(code , "chi" , 3);
if(strncmp((char *)(multilingual_info_area->iso_639_language), code, 3) == 0)
{
*tag_info_area = multilingual_info_area;
}
else
{
while(1)
{
multi = multilingual_info_area->next;
if(multi == NULL)
break;
if(strncmp((char *)(multi->iso_639_language), code, 3) == 0)
break;
if(multi->next == NULL)
break;
}
*tag_info_area = multi;
}
return SUCCESS;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -