-
GongHeng2017 authored
problem: After switching screens using a KVM switch, there is a probability that the application interface will become unresponsive to clicks. analysis: The valid size range supported by the Cairo surface is [0,32767]. If the width and height exceed this range, the surface's status is set to CAIRO_STATUS_INVALID_SIZE, indicating an invalid size exception. In this exception state, Cairo does not have a clipping region. When determining whether the window needs to be drawn, the function gdk_cairo_get_clip_rectangle() is used to check if the cairo_t has a clipping region. If there is none, the window and its child windows will not be drawn (i.e., the draw signal will not be emitted). If an error occurs in the X server and a value exceeding Cairo's valid size is provided in the ConfigureNotify, it will result in the window and its child windows not being drawn. Therefore, we will add range checks here to avoid this special situation.
GongHeng2017 authoredproblem: After switching screens using a KVM switch, there is a probability that the application interface will become unresponsive to clicks. analysis: The valid size range supported by the Cairo surface is [0,32767]. If the width and height exceed this range, the surface's status is set to CAIRO_STATUS_INVALID_SIZE, indicating an invalid size exception. In this exception state, Cairo does not have a clipping region. When determining whether the window needs to be drawn, the function gdk_cairo_get_clip_rectangle() is used to check if the cairo_t has a clipping region. If there is none, the window and its child windows will not be drawn (i.e., the draw signal will not be emitted). If an error occurs in the X server and a value exceeding Cairo's valid size is provided in the ConfigureNotify, it will result in the window and its child windows not being drawn. Therefore, we will add range checks here to avoid this special situation.
Loading