示例#1
0
/*
 * Function    : _libaroma_ctl_list_destroy
 * Return Value: void
 * Descriptions: destroy scroll list client
 */
void _libaroma_ctl_list_destroy(
    LIBAROMA_CONTROLP ctl, LIBAROMA_CTL_SCROLL_CLIENTP client){
  if (client->handler!=&_libaroma_ctl_list_handler){
    return;
  }
  LIBAROMA_CTL_SCROLLP mi = (LIBAROMA_CTL_SCROLLP) client->internal;
  
  /* cleanup items */
  LIBAROMA_CTL_LIST_ITEMP f = mi->first;
  while(f){
    LIBAROMA_CTL_LIST_ITEMP p = f;
    f = p->next;
    
    /* destroy */
    if (p->handler->destroy!=NULL){
      p->handler->destroy(ctl,p);
    }
    _libaroma_ctl_list_free_state(p);
    free(p);
  }
  
  if (mi->threadn>0){
    free(mi->threads);
  }
  
  /* free internal data */
  libaroma_mutex_free(mi->imutex);
  libaroma_mutex_free(mi->mutex);
  free(mi);
  client->internal=NULL;
  client->handler=NULL;
} /* End of _libaroma_ctl_list_destroy */
示例#2
0
/*
 * Function    : LINUXFBDR_release
 * Return Value: void
 * Descriptions: release framebuffer driver
 */
void LINUXFBDR_release(LIBAROMA_FBP me) {
  if (me==NULL) {
    return;
  }
  LINUXFBDR_INTERNALP mi = (LINUXFBDR_INTERNALP) me->internal;
  if (mi==NULL){
    return;
  }
  
  if (mi->qcom!=NULL){
    /* release qcom overlay driver */
    QCOMFB_release(me);
  }
  
  /* unmap */
  if (mi->buffer!=NULL){
    ALOGV("LINUXFBDR munmap buffer");
    munmap(mi->buffer, mi->fix.smem_len);
  }
  
  /* close fb */
  ALOGV("LINUXFBDR close fb-fd");
  close(mi->fb);
  
  /* destroy mutex & cond */
  libaroma_mutex_free(mi->mutex);
  
  /* free internal data */
  ALOGV("LINUXFBDR free internal data");
  free(me->internal);
} /* End of LINUXFBDR_release */
示例#3
0
/*
 * Function    : SDLFBDR_release
 * Return Value: void
 * Descriptions: release framebuffer driver
 */
void SDLFBDR_release(LIBAROMA_FBP me) {
  if (me==NULL) {
    return;
  }
  SDLFBDR_INTERNALP mi = (SDLFBDR_INTERNALP) me->internal;
  if (mi==NULL){
    return;
  }
  
  SDL_Quit();
  
  /* destroy mutex & cond */
  libaroma_mutex_free(mi->mutex);
  
  /* free internal data */
  ALOGV("SDLFBDR free internal data");
  free(me->internal);
} /* End of SDLFBDR_release */
示例#4
0
/*
 * Function : Release Framebuffer Instance (Same For All Colorspace)
 *
 */
void QNXGF_release(LIBAROMA_FBP me) {
  /* Is Framebuffer Initialized ? */
  if (me == NULL) {
    return;
  }
  
  /* Get Internal Data */
  QNXGF_INTERNALP mi = (QNXGF_INTERNALP) me->internal;
  /* Release GF */
  ALOGV("QNXGF Release Graphic Frameworks");
  gf_context_free(mi->context);
  gf_surface_free(mi->surface);
  gf_layer_detach(mi->layer);
  gf_display_detach(mi->display);
  gf_dev_detach(mi->gdev);
  /* Free Internal Data */
  ALOGV("QNXGF free internal data");
  free(me->internal);
  
  libaroma_mutex_free(___qnxfbmutex);
}