⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mosaic_tree.c

📁 c语言编的
💻 C
📖 第 1 页 / 共 2 页
字号:
						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 + -