/** * @brief Copy part of display * * @param display gui_diaplay instance * @param rect rectangle to copy * @param img * * @return */ wg_status gui_display_copy(Gui_display *display, Wg_rect *rect, Wg_image *img) { wg_uchar *buffer = NULL; Wg_image image; Wg_image rect_image; wg_uint width = 0; wg_uint height = 0; cam_status status = CAM_FAILURE; gdk_threads_enter(); width = gdk_pixbuf_get_width(display->pixbuf); height = gdk_pixbuf_get_height(display->pixbuf); buffer = gdk_pixbuf_get_pixels(display->pixbuf); status = img_rgb_from_buffer(buffer, width, height, &image); if (CAM_FAILURE == status){ return WG_FAILURE; } gdk_threads_leave(); status = img_fill(rect->width, rect->height, RGB24_COMPONENT_NUM, IMG_RGB, &rect_image); if (CAM_FAILURE == status){ img_cleanup(&image); return WG_FAILURE; } status = img_get_subimage(&image, rect->x, rect->y, &rect_image); if (CAM_FAILURE == status){ img_cleanup(&image); img_cleanup(&rect_image); return WG_FAILURE; } status = img_rgb_2_hsv_gtk(&rect_image, img); if (CAM_FAILURE == status){ img_cleanup(&image); img_cleanup(&rect_image); return WG_FAILURE; } img_cleanup(&image); img_cleanup(&rect_image); return WG_SUCCESS; }
void __blursk_cleanup (BlurskPrivate *priv) { img_cleanup(); visual_mem_free(songinfo); /* cleanup config strings */ visual_mem_free(config.color_style); visual_mem_free(config.signal_color); visual_mem_free(config.background); visual_mem_free(config.blur_style); visual_mem_free(config.transition_speed); visual_mem_free(config.blur_when); visual_mem_free(config.blur_stencil); visual_mem_free(config.fade_speed); visual_mem_free(config.signal_style); visual_mem_free(config.plot_style); visual_mem_free(config.flash_style); visual_mem_free(config.overall_effect); visual_mem_free(config.floaters); visual_mem_free(config.cpu_speed); visual_mem_free(config.show_info); }