static void ftk_source_gtk_destroy(FtkSource* thiz) { if(thiz != NULL) { FTK_ZFREE(thiz, sizeof(thiz)); } }
static void ftk_image_qt_decoder_destroy(FtkImageDecoder* thiz) { if(thiz != NULL) { FTK_ZFREE(thiz, sizeof(FtkImageDecoder)); } }
FtkSource* ftk_source_ps2mouse_create(const char* filename, FtkOnEvent on_event, void* user_data, int max_x, int max_y) { FtkSource* thiz = (FtkSource*)FTK_ZALLOC(sizeof(FtkSource) + sizeof(PrivInfo)); if(thiz != NULL) { DECL_PRIV(thiz, priv); thiz->get_fd = ftk_source_ps2mouse_get_fd; thiz->check = ftk_source_ps2mouse_check; thiz->dispatch = ftk_source_ps2mouse_dispatch; thiz->destroy = ftk_source_ps2mouse_destroy; thiz->ref = 1; priv->fd = open(filename, O_RDONLY); ftk_strncpy(priv->filename, filename, sizeof(priv->filename)); open_device(priv, max_x, max_y); if(priv->fd < 0) { FTK_ZFREE(thiz, sizeof(thiz) + sizeof(PrivInfo)); return NULL; } priv->on_event = on_event; priv->user_data = user_data; priv->is_first_move = true; ftk_logd("%s: %d=%s priv->user_data=%p\n", __func__, priv->fd, filename, priv->user_data); } return thiz; }
static void ftk_input_method_win32_destroy(FtkInputMethod* thiz) { if(thiz != NULL) { DECL_PRIV(thiz, priv); FTK_ZFREE(thiz, sizeof(FtkInputMethod) + sizeof(PrivInfo)); } }
void ftk_config_destroy(FtkConfig* thiz) { if(thiz != NULL) { FTK_ZFREE(thiz, sizeof(FtkConfig)); } return; }
static void ftk_menu_panel_destroy(FtkWidget* thiz) { DECL_PRIV1(thiz, priv); FtkWidgetDestroy parent_destroy = priv->parent_destroy; parent_destroy(thiz); FTK_ZFREE(thiz->priv_subclass[1], sizeof(PrivInfo)); return; }
static void ftk_source_psp_destroy(FtkSource* thiz) { if(thiz != NULL) { FTK_ZFREE(thiz, sizeof(thiz) + sizeof(PrivInfo)); } return; }
static void ftk_image_jpeg_decoder_destroy(FtkImageDecoder* thiz) { if(thiz != NULL) { FTK_ZFREE(thiz, sizeof(thiz)); } return; }
static void ftk_config_builder_destroy(FtkXmlBuilder* thiz) { if(thiz != NULL) { FTK_ZFREE(thiz, sizeof(FtkXmlBuilder) + sizeof(PrivInfo)); } return; }
void ftk_translator_destroy(FtkTranslator* thiz) { if(thiz != NULL) { FTK_ZFREE(thiz, sizeof(FtkTranslator)); } return; }
static void ftk_painter_destroy(FtkWidget* thiz) { if(thiz != NULL) { DECL_PRIV0(thiz, priv); FTK_ZFREE(priv, sizeof(PrivInfo)); } return; }
void ftk_mmap_destroy(FtkMmap* thiz) { if(thiz != NULL) { FTK_FREE(thiz->data); FTK_ZFREE(thiz, sizeof(*thiz)); } return; }
void ftk_widget_destroy(FtkWidget* thiz) { if(thiz != NULL) { int i = 0; for(i = 0; i < FTK_WIDGET_STATE_NR; i++) { ftk_gc_reset(thiz->priv->gc+i); } FTK_ZFREE(thiz->priv, sizeof(thiz->priv)); if(thiz->destroy != NULL) { thiz->destroy(thiz); } FTK_ZFREE(thiz, sizeof(FtkWidget)); } return; }
FtkSource* ftk_source_input_create(const char* filename, FtkOnEvent on_event, void* user_data) { FtkSource* thiz = (FtkSource*)FTK_ZALLOC(sizeof(FtkSource) + sizeof(PrivInfo)); rt_device_t device = NULL; if (thiz != NULL) { DECL_PRIV(thiz, priv); thiz->get_fd = ftk_source_input_get_fd; thiz->check = ftk_source_input_check; thiz->dispatch = ftk_source_input_dispatch; thiz->destroy = ftk_source_input_destroy; thiz->ref = 1; priv->device = rt_device_find(filename); if (priv->device == NULL) { FTK_ZFREE(thiz, sizeof(thiz) + sizeof(PrivInfo)); return NULL; } if (rt_device_open(priv->device, RT_DEVICE_OFLAG_RDONLY) != RT_EOK) { FTK_ZFREE(thiz, sizeof(thiz) + sizeof(PrivInfo)); return NULL; } priv->device->user_data = (void *)thiz; rt_device_set_rx_indicate(priv->device, ftk_source_input_rx_ind); priv->fd = ftk_rtthread_select_fd_alloc(); priv->on_event = on_event; priv->user_data = user_data; ftk_keymap_init(); ftk_logd("%s: %d=%s priv->user_data=%p\n", __func__, priv->fd, filename, priv->user_data); } return thiz; }
static void ftk_source_x11_destroy(FtkSource* thiz) { if(thiz != NULL) { DECL_PRIV(thiz, priv); close(priv->fd); FTK_ZFREE(thiz, sizeof(thiz) + sizeof(PrivInfo)); } return; }
static void ftk_key_board_destroy(FtkWidget* thiz) { if(thiz != NULL) { DECL_PRIV0(thiz, priv); ftk_key_board_desc_destroy(priv->desc); FTK_ZFREE(priv, sizeof(PrivInfo)); } return; }
static void ftk_scroll_bar_destroy(FtkWidget* thiz) { if(thiz != NULL) { DECL_PRIV0(thiz, priv); ftk_bitmap_unref(priv->bitmap); FTK_ZFREE(priv, sizeof(PrivInfo)); } return; }
static void ftk_source_primary_destroy(FtkSource* thiz) { if(thiz != NULL) { DECL_PRIV(thiz, priv); ftk_pipe_destroy(priv->pipe); FTK_ZFREE(thiz, sizeof(FtkSource) + sizeof(PrivInfo)); } return; }
static void ftk_check_button_destroy(FtkWidget* thiz) { if(thiz != NULL) { DECL_PRIV0(thiz, priv); ftk_bitmap_unref(priv->onimg); ftk_bitmap_unref(priv->offimg); FTK_ZFREE(priv, sizeof(PrivInfo)); } return; }
void ftk_font_freetype_destroy(FtkFont* thiz) { if(thiz != NULL) { DECL_PRIV(thiz, priv); FT_Done_Face(priv->face); FT_Done_FreeType(priv->library); FTK_ZFREE(thiz, sizeof(*thiz) + sizeof(PrivInfo)); } return; }
void ftk_hand_write_engine_destroy(FtkHandWriteEngine* thiz) { if(thiz != NULL) { ftk_lookup_table_destroy(thiz->lookup_table); fhw_primitive_recognizer_destroy(thiz->recognizer); FTK_ZFREE(thiz, sizeof(FtkHandWriteEngine)); } return; }
static void ftk_source_input_destroy(FtkSource* thiz) { if (thiz != NULL) { DECL_PRIV(thiz, priv); ftk_rtthread_select_fd_free(priv->fd); rt_device_close(priv->device); FTK_ZFREE(thiz, sizeof(thiz) + sizeof(PrivInfo)); } }
static void access_avi_destroy(Access *thiz) { if(thiz) { DECL_PRIV(thiz, priv); block_destroy(priv->block); FTK_FREE(priv->file_path); av_close_input_file(priv->format_ctx); FTK_ZFREE(thiz, sizeof(*thiz) + sizeof(PrivInfo)); } return; }
static void ftk_progress_bar_destroy(FtkWidget* thiz) { if(thiz != NULL) { DECL_PRIV0(thiz, priv); FTK_BITMAP_UNREF(priv->bg); FTK_BITMAP_UNREF(priv->cursor); FTK_ZFREE(priv, sizeof(PrivInfo)); } return; }
static void ftk_display_android_destroy(FtkDisplay* thiz) { if(thiz != NULL) { DECL_PRIV(thiz, priv); ftk_wnd_manager_remove_global_listener(ftk_default_wnd_manager(), (FtkListener)ftk_display_android_handle_event, thiz); ftk_bitmap_unref(priv->bitmap); FTK_ZFREE(thiz, sizeof(FtkDisplay) + sizeof(PrivInfo)); } return; }
static void ftk_source_dfb_destroy(FtkSource* thiz) { if(thiz != NULL) { DECL_PRIV(thiz, priv); close(priv->fd); if(priv->event_buffer != NULL) { priv->event_buffer->Release(priv->event_buffer); } FTK_ZFREE(thiz, sizeof(FtkSource) + sizeof(PrivInfo)); } return; }
static void ftk_input_method_hw_destroy(FtkInputMethod* thiz) { if(thiz != NULL) { DECL_PRIV(thiz, priv); ftk_source_unref(priv->commit_timer); ftk_source_unref(priv->click_timer); ftk_stroke_painter_destroy(priv->painter); ftk_hand_write_engine_destroy(priv->engine); FTK_ZFREE(thiz, sizeof(FtkInputMethod) + sizeof(PrivInfo)); } return; }
static void ftk_display_mem_destroy(FtkDisplay* thiz) { if(thiz != NULL) { DECL_PRIV(thiz, priv); if(priv->on_destroy != NULL) { priv->on_destroy(priv->on_destroy_ctx); } FTK_ZFREE(thiz, sizeof(FtkDisplay) + sizeof(PrivInfo)); } return; }
void ftk_input_method_manager_destroy(FtkInputMethodManager* thiz) { size_t i = 0; if(thiz != NULL) { for(i = 0; i < thiz->nr; i++) { ftk_input_method_destroy(thiz->methods[i]); thiz->methods[i] = NULL; } FTK_ZFREE(thiz, sizeof(FtkInputMethodManager)); } return; }
FtkMmap* ftk_mmap_create(const char* filename, size_t offset, size_t size) { size_t n; wchar_t buf[MAX_PATH]; FtkMmap* thiz = NULL; LARGE_INTEGER li; WIN32_FILE_ATTRIBUTE_DATA attr; return_val_if_fail(filename != NULL, NULL); if (MultiByteToWideChar(CP_ACP, 0, filename, -1, buf, MAX_PATH) == 0) { return NULL; } if (!GetFileAttributesExW(buf, GetFileExInfoStandard, &attr)) { return NULL; } li.LowPart = attr.nFileSizeLow; li.HighPart = attr.nFileSizeHigh; n = (size_t) li.QuadPart; /*ftk_logd("%s: %d\n", filename, n);*/ return_val_if_fail(offset < n, NULL); size = (offset + size) <= n ? size : n - offset; thiz = FTK_ZALLOC(sizeof(FtkMmap)); return_val_if_fail(thiz != NULL, NULL); thiz->fp = fopen(filename, "rb"); if(thiz->fp != NULL) { thiz->length = size; thiz->data = FTK_ZALLOC(size+1); fseek(thiz->fp, offset, SEEK_SET); fread(thiz->data, thiz->length, 1, thiz->fp); fclose(thiz->fp); } if(thiz->data == NULL || thiz->data == NULL) { FTK_ZFREE(thiz, sizeof(*thiz)); ftk_logd("%s mmap %s failed.\n", __func__, filename); } return thiz; }