예제 #1
0
struct rtgui_dc* rtgui_dc_begin_drawing(rtgui_widget_t* owner)
{
	RT_ASSERT(owner != RT_NULL);

	if ((rtgui_region_is_flat(&owner->clip) == RT_EOK) &&
		rtgui_rect_is_equal(&(owner->extent), &(owner->clip.extents)) == RT_EOK) {
		/* use hardware DC */
		return rtgui_dc_hw_create(owner);
	}

	return rtgui_dc_client_create(owner);
}
예제 #2
0
struct rtgui_dc* rtgui_dc_begin_drawing(rtgui_widget_t* owner)
{
	struct rtgui_dc* dc;
	RT_ASSERT(owner != RT_NULL);

	rtgui_screen_lock(RT_WAITING_FOREVER);

	if ((rtgui_region_is_flat(&owner->clip) == RT_EOK) &&
		rtgui_rect_is_equal(&(owner->extent), &(owner->clip.extents)) == RT_EOK)
		dc = rtgui_dc_hw_create(owner);
	else
		dc = rtgui_dc_client_create(owner);

	if (dc == RT_NULL) rtgui_screen_unlock();

	return dc;
}