MCPcopy Create free account
hub / github.com/KangLin/RabbitRemoteControl / cb_end_paint

Method cb_end_paint

Plugins/FreeRDP/Client/BackendFreeRDP.cpp:1953–2015  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1951}
1952
1953BOOL 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 }

Callers

nothing calls this directly

Calls 1

UpdateBufferMethod · 0.80

Tested by

no test coverage detected