DirectFB源代码阅读(四)dfb_core_create .

先把dfb_core_create的源码看一下,包含的内容比较多,本篇先介绍大概的情况,下面几篇文章对里面的函数进行详细讲述.

  1. DFBResult dfb_core_create( CoreDFB **ret_core )  
  2. {  
  3.      CoreDFB       *core   = NULL;  
  4.      CoreDFBShared *shared = NULL;  
  5.   
  6.      ret = dfb_system_lookup(); //找到所有显示方式是什么system   
  7.   
  8.      /* Allocate local core structure. */  
  9.      core = D_CALLOC( 1, sizeof(CoreDFB) );  
  10.   
  11.      core->refs = 1;  
  12.      //注册一个线程处理函数,这个函数的实现什么也没有做   
  13.      core->init_handler = direct_thread_add_init_handler( dfb_core_thread_init_handler, core );  
  14.   
  15. #if FUSION_BUILD_MULTI   
  16.      dfb_system_thread_init();//此函数功用和上面注册的线程处理函数一样   
  17. #endif   
  18.   
  19.      direct_find_best_memcpy();//对系统中几个memcpy进行比较,找到最快的一个.   
  20.   
  21.      D_MAGIC_SET( core, CoreDFB );  
  22.   
  23.      core_dfb = core;  
  24.      //初始化fusion,fusion是用于进程间通信的机制.用于实现同时运行多个dfb程序     
  25.      ret = fusion_enter( dfb_config->session, DIRECTFB_CORE_ABI, FER_ANY, &core->world );  
  26.   
  27.      core->fusion_id = fusion_id( core->world );  
  28.    //注册一个信号处理函数,用于处理程序退出时的处理.这边有文章噢!   
  29.      direct_signal_handler_add( DIRECT_SIGNAL_ANY, dfb_core_signal_handler, core, &core->signal_handler );  
  30.    //共享数据处理   
  31.      if (fusion_arena_enter( core->world, "DirectFB/Core",  
  32.                              dfb_core_arena_initialize, dfb_core_arena_join,  
  33.                              core, &core->arena, &ret ) || ret){}  
  34.   
  35.      shared = core->shared;  
  36.   
  37.      fusion_skirmish_prevail( &shared->lock );  
  38.   
  39.      if (!core->master) {  
  40.           while (!shared->active)  
  41.                fusion_skirmish_wait( &shared->lock, 0 );  
  42.      }  
  43.   
  44.      fusion_skirmish_dismiss( &shared->lock );  
  45.   
  46.      dfb_font_manager_create( core, &core->font_manager );//字体管理初始化   
  47.   
  48.      *ret_core = core;  
  49.   
  50.      return DFB_OK;  
  51. }  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值