Почему поверхность cairo xcb не обновляется, пока я не переместлю окно? - PullRequest
0 голосов
/ 02 декабря 2018

Я использую связывание xcb и cairo в ржавчине, чтобы нарисовать что-то на X. И я использую функцию для рисования многоугольника (код ниже):

fn polygon(&self, points: &[Position], color: Color) {
    if points.len() >= 2 {
        let context = cairo::Context::new(&self.cairo_surface);
        context.set_source_rgb(color.r, color.g, color.b);
        context.move_to(points[0].x as f64, points[0].y as f64);
        for i in 1..(points.len()) {
            context.line_to(points[i].x as f64, points[i].y as f64);
        }
        context.close_path();
        context.fill();
    }
}

И после рисования я сбрасываюкак поверхность Каира, так и соединение xcb.Но многоугольник не появляется, пока я не переместлю окно или не переключу окна (с помощью Alt + Tab).

Я также использую pangocairo, чтобы рисовать на нем текст.Это не проблема.

...