Ich habe ein Problem mit XCB. Ich verstehe den Unterschied zwischen *_reply_t
vs *_request_t
Typen nicht.reply_t vs request_t - sie austauschbar übergeben?
Es scheint, dass die *_reply_t
anstelle der *_response_t
übergeben wird, jedoch sind die Strukturen sehr unterschiedlich.
Zum Beispiel:
xcb_randr_get_screen_resources_current_reply_t *reply = xcb_randr_get_screen_resources_current_reply(
connection, xcb_randr_get_screen_resources_current(connection, root), NULL);
So, jetzt reply
ist die Art der *_reply_t
. Aber jetzt brauche ich xcb_randr_get_screen_resources_current_outputs
zu verwenden, die das erste Argument erwartet vom Typ seine xcb_randr_get_screen_resources_current_request_t
gemäß dem docs hier:
http://www.linuxhowtos.org/manpages/3/xcb_randr_get_screen_resources_current_outputs.htm
xcb_randr_output_t *xcb_randr_get_screen_resources_current_outputs(
const xcb_randr_get_screen_resources_current_request_t *reply
);
jedoch die Antwort von dem ersten Aufruf vom Typ xcb_randr_get_screen_resources_current_reply_t
(*_reply_t
). Wie ist es möglich, dies in den Output-Call ohne Casting zu übergeben? Die Strukturen sind völlig verschieden pro docs:
typedef struct xcb_randr_get_screen_resources_current_reply_t {
uint8_t response_type;
uint8_t pad0;
uint16_t sequence;
uint32_t length;
xcb_timestamp_t timestamp;
xcb_timestamp_t config_timestamp;
uint16_t num_crtcs;
uint16_t num_outputs;
uint16_t num_modes;
uint16_t names_len;
uint8_t pad1[8];
} xcb_randr_get_screen_resources_current_reply_t;
und die Struktur für die *_request_t
ist nicht in der Dokumentation habe ich es aus dem Quellcode hier:
https://xcb.freedesktop.org/manual/randr_8h_source.html#l00896
typedef struct xcb_randr_get_screen_resources_current_request_t {
uint8_t major_opcode;
uint8_t minor_opcode;
uint16_t length;
xcb_window_t window;
} xcb_randr_get_screen_resources_current_request_t;
ich tun Also muss ich den Typ, den ich vorher übergeben werde, für die Signatur der Methode deklarieren. So bin ich sehr verwirrt darüber, wie etwas von einer völlig anderen Struktur (reply
) in einen zweiten Anruf geht, der die Struktur request
hat.
Ohhh richtig! Die Methodensignatur verwendet das in dieser Codedatei nicht. Doc-Fehler sicher. Vielen Dank! Die 'Antwort' auf' Anfrage' in der Post wurde korrigiert :) – Noitidart