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); }
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; }