0
Я кодирую клиентский буфер обмена x11, и мне сложно работать с INCR. Основном, моя проблема в том, что, когда я называю XDeleteProperty, чтобы начать передачу INCR, я получил код ошибки BadRequestXDeleteProperty возвращает ошибку BadRequest
Вот отрывок:
if (type == ctx->incr_atom)
{
ctx->pendingIncr.status = INCR_REQUEST_NEW;
if(XGetWindowProperty(ctx->display, ctx->window,
ctx->property_atom, 0, remaining, FALSE, AnyPropertyType,
&type, &format_property, &length, &remaining, &data) == Success)
{
fprintf(stderr, "Getting window property : %lu bytes fetched\n", length);
}
else
{
fprintf(stderr, "Failed getting window property\n");
}
error = XDeleteProperty(ctx->display, ctx->window, ctx->property_atom);
if(error == Success)
{
fprintf(stderr, "Entering INCR Protocol!\n");
}
else
{
fprintf(stderr, "Failed deleting window property : error code %d\n", error);
}
XFlush(ctx->display);
return 1;
}
По моему опыту BadRequest - это то же самое, что и «не реализовано». По моему мнению, вы можете удалить параметр удаления свойства true и bytes_after_return to 0 в XGetWindowProperty. Это может объяснить, почему XDeleteProperty может не реализоваться. Удаляется ли путем установки параметров delete и bytes_after_return допустимого действия в вашем случае? Можете ли вы «улучшить» свой вопрос, чтобы было более ясно, что вы ожидаете от ответа? http://linux.die.net/man/3/xgetwindowproperty – Andreas
Это может быть ошибка в X. Действительно ли свойство действительно удалено? –