Skip to content
  • GongHeng2017's avatar
    90390d64
    fix: [draw] The application interface is unresponsive to clicks. · 90390d64
    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.
    90390d64
    fix: [draw] The application interface is unresponsive to clicks.
    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.
Loading