0
Ich codiere einen x11-Klemmbrett-Client, und ich bekomme harte Zeit mit INCR. Basicly, mein Problem ist, dass, wenn ich XDeleteProperty auf rufen Sie die INCR Übertragung zu starten, ich habe hier vor sich einen BadRequest FehlercodeXDeleteProperty gibt BadRequest-Fehler zurück
ein Ausschnitt:
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;
}
Nach meiner Erfahrung ist BadRequest das gleiche wie "nicht implementiert". Aus meiner Sicht können Sie einen Parameter zum Löschen der Eigenschaft löschen, indem Sie in XGetWindowProperty auf true und bytes_after_return auf 0 setzen. Dies könnte erklären, warum XDeleteProperty möglicherweise nicht implementiert ist. Ist das Löschen durch Setzen der Parameter delete und bytes_after_recturn in Ihrem Fall eine sinnvolle Vorgehensweise? Können Sie Ihre Frage "verbessern", so dass klarer ist, was Sie von einer Antwort erwarten würden? http://linux.die.net/man/3/xgetwindowproperty – Andreas
Es kann ein Fehler in X sein. Wird die Eigenschaft tatsächlich gelöscht? –