| 1951 | } |
| 1952 | |
| 1953 | BOOL CBackendFreeRDP::cb_end_paint(rdpContext *context) |
| 1954 | { |
| 1955 | //qDebug(log) << Q_FUNC_INFO; |
| 1956 | ClientContext* pContext = (ClientContext*)context; |
| 1957 | CBackendFreeRDP* pThis = pContext->pThis; |
| 1958 | INT32 ninvalid; |
| 1959 | HGDI_RGN cinvalid; |
| 1960 | REGION16 invalidRegion; |
| 1961 | RECTANGLE_16 invalidRect; |
| 1962 | const RECTANGLE_16* extents; |
| 1963 | HGDI_DC hdc; |
| 1964 | int i = 0; |
| 1965 | |
| 1966 | if (!context || !context->gdi || !context->gdi->primary |
| 1967 | || !context->gdi->primary->hdc) |
| 1968 | return FALSE; |
| 1969 | |
| 1970 | hdc = context->gdi->primary->hdc; |
| 1971 | |
| 1972 | if (!hdc || !hdc->hwnd || !hdc->hwnd->invalid) |
| 1973 | return FALSE; |
| 1974 | |
| 1975 | rdpGdi* gdi = context->gdi; |
| 1976 | if (gdi->suppressOutput) |
| 1977 | return TRUE; |
| 1978 | |
| 1979 | HGDI_WND hwnd = context->gdi->primary->hdc->hwnd; |
| 1980 | ninvalid = hwnd->ninvalid; //无效区数量 |
| 1981 | cinvalid = hwnd->cinvalid; //无效区数组 |
| 1982 | if (ninvalid < 1) |
| 1983 | return TRUE; |
| 1984 | |
| 1985 | region16_init(&invalidRegion); |
| 1986 | |
| 1987 | for (i = 0; i < ninvalid; i++) |
| 1988 | { |
| 1989 | if(cinvalid[i].null) |
| 1990 | { |
| 1991 | qWarning(log) << "is null region" << cinvalid[i].x << cinvalid[i].y |
| 1992 | << cinvalid[i].w << cinvalid[i].h; |
| 1993 | continue; |
| 1994 | } |
| 1995 | invalidRect.left = cinvalid[i].x; |
| 1996 | invalidRect.top = cinvalid[i].y; |
| 1997 | invalidRect.right = cinvalid[i].x + cinvalid[i].w; |
| 1998 | invalidRect.bottom = cinvalid[i].y + cinvalid[i].h; |
| 1999 | region16_union_rect(&invalidRegion, &invalidRegion, &invalidRect); |
| 2000 | } |
| 2001 | |
| 2002 | if (!region16_is_empty(&invalidRegion)) |
| 2003 | { |
| 2004 | extents = region16_extents(&invalidRegion); |
| 2005 | //qDebug(log) << extents->left << extents->top << extents->right << extents->bottom; |
| 2006 | pThis->UpdateBuffer(extents->left, |
| 2007 | extents->top, |
| 2008 | extents->right - extents->left, |
| 2009 | extents->bottom - extents->top); |
| 2010 | } |
nothing calls this directly
no test coverage detected