summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2015-05-30c_client.py: use pattern matching with enumerate()Ran Benita
Signed-off-by: Ran Benita <ran234@gmail.com>
2015-04-08expose 64-bit sequence numbers for XLibChristian Linhart
While XCB uses 64-bit sequence number internally, it only exposes "unsigned int" so that, on 32-bit architecture, Xlib based applications may see their sequence number wrap which causes the connection to the X server to be lost. Expose 64-bit sequence number from XCB API so that Xlib and others can use it even on 32-bit environment. This implies the following API addition: xcb_send_request64() xcb_discard_reply64() xcb_wait_for_reply64() xcb_poll_for_reply64() Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=71338 Reviewed-by: Uli Schlachter <psychon@znc.in> Signed-off-by: Christian Linhart <chris@demorecorder.com> Signed-off-by: Olivier Fourdan <ofourdan@redhat.com>
2015-04-29Escape \n to display properly in xcb-requests man pageAlan Coopersmith
In nroff, \n is a macro that "Interpolates number register x" (where x is the character following the \n sequence), thus the man page currently prints 0 instead of \n" in several lines, leading to output such as: printf("The _NET_WM_NAME atom has ID %u0, reply-⁠>atom); It needs to be escaped here, as \\n, as is done in other examples in this man page already. https://bugs.freedesktop.org/show_bug.cgi?id=90231 Reported-by: Stefan Merettig Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>
2015-03-15c_client.py: make condition easier to follow in _c_complex()Ran Benita
Signed-off-by: Ran Benita <ran234@gmail.com> Reviewed-by: Christian Linhart <chris@demorecorder.com>
2015-03-15c_client.py: don't add /* <name> */ before references to 'S'Ran Benita
The name can be understood from the type of S already. For examples, look for 'S->' in xkb.c or xinput.c. Signed-off-by: Ran Benita <ran234@gmail.com> Reviewed-by: Christian Linhart <chris@demorecorder.com> Reviewed-by: Rémi Cardona <remi@gentoo.org>
2015-03-15c_client.py: remove duplicated `cookie_type` argument for requestsRan Benita
It is implied already inside the function by the `void` argument. Signed-off-by: Ran Benita <ran234@gmail.com> Reviewed-by: Christian Linhart <chris@demorecorder.com>
2015-03-15c_client.py: spell out keyword arguments in c_request() for clarityRan Benita
Signed-off-by: Ran Benita <ran234@gmail.com> Reviewed-by: Christian Linhart <chris@demorecorder.com>
2015-03-15c_client.py: simplify _c_reply_has_fds()Ran Benita
Signed-off-by: Ran Benita <ran234@gmail.com> Reviewed-by: Christian Linhart <chris@demorecorder.com>
2015-03-15c_client.py: remove commented debug statementsRan Benita
Signed-off-by: Ran Benita <ran234@gmail.com> Reviewed-by: Christian Linhart <chris@demorecorder.com>
2015-03-15c_client.py: use C99 initializers instead of commentsRan Benita
Signed-off-by: Ran Benita <ran234@gmail.com> Reviewed-by: Christian Linhart <chris@demorecorder.com>
2015-03-15c_client.py: remove end-of-function commentsRan Benita
Signed-off-by: Ran Benita <ran234@gmail.com> Reviewed-by: Christian Linhart <chris@demorecorder.com>
2015-03-15c_client.py: no need to compare bools to True/FalseRan Benita
Signed-off-by: Ran Benita <ran234@gmail.com> Reviewed-by: Christian Linhart <chris@demorecorder.com>
2015-03-15c_client.py: use "foo".join() instead of reduceRan Benita
Signed-off-by: Ran Benita <ran234@gmail.com> Reviewed-by: Christian Linhart <chris@demorecorder.com>
2015-03-15c_client.py: fix indentationRan Benita
(Also remove unnecessary parens around the condition). Signed-off-by: Ran Benita <ran234@gmail.com> Reviewed-by: Christian Linhart <chris@demorecorder.com>
2015-03-15c_client.py: use comprehensions instead of map/filterRan Benita
Signed-off-by: Ran Benita <ran234@gmail.com> Reviewed-by: Christian Linhart <chris@demorecorder.com>
2015-03-15c_client.py: use print as a function for python3 compatibilityRan Benita
This works for all python>=2.6, which is what configure requires. Signed-off-by: Ran Benita <ran234@gmail.com> Reviewed-by: Christian Linhart <chris@demorecorder.com>
2015-03-15c_client.py: fix pyflakes errorsRan Benita
c_client.py:2: 'from xml.etree.cElementTree import *' used; unable to detect undefined names c_client.py:3: 'basename' imported but unused c_client.py:9: 'time' imported but unused c_client.py:1437: local variable 'list_obj' is assigned to but never used c_client.py:1745: local variable 'varfield' is assigned to but never used c_client.py:2050: local variable 'length' is assigned to but never used c_client.py:2416: local variable 'R_obj' is assigned to but never used c_client.py:2441: local variable 'S_obj' is assigned to but never used Signed-off-by: Ran Benita <ran234@gmail.com> Reviewed-by: Christian Linhart <chris@demorecorder.com>
2015-03-15c_client.py: simplify maximum expressionRan Benita
Signed-off-by: Ran Benita <ran234@gmail.com> Reviewed-by: Christian Linhart <chris@demorecorder.com>
2015-03-15c_client.py: remove unneeded call to get_serialize_params()Ran Benita
The results are not used, and the function doesn't have side effects. Signed-off-by: Ran Benita <ran234@gmail.com> Reviewed-by: Christian Linhart <chris@demorecorder.com>
2015-02-22Adding accessors for requestsJaya Tiwari
Added accessor functions for requests the same way they were added for structs,events and replies. Lists for replies have accessor functions now. Signed-off-by: Jaya Tiwari <tiwari.jaya18@gmail.com> Reviewed-by: Christian Linhart <chris@demorecorder.com> Comment from the Reviewer Christian Linhart: I have tested your patch after fixing the issues with the patch-format. It looks good: * only adds new functions, and does not modify existing functions. Therefore it is API and ABI compatible. * adds accessors for varsized-stuff in requests. This is needed for server-side XCB and may be useful for implementing X11-protocol proxies.
2015-02-10Merge http://git.demorecorder.com/git/free-sw/xcb/libxcbChristian Linhart
branch 'ParametrizedStruct-V7'
2014-11-03generator: support parametrized structsChristian Linhart
Parametrized structs contain paramref expressions which refer to the value of a field defined in the context where the struct is used. Implementing the parametrized structs turned out to be somewhat easier than previously thought because the generator already had some support for type-parametrization because this is needed when case or bitcase refers to fields outside of the switch. So I decided to go with the flow and to implement the solution which best fits the current implementation. I did the following: * I provided a way to specify fieldref with an explicitely given type: This resulted in <paramref type="CARD8>fieldname</paramref> A paramref is just a fieldref with an explicit type. The type is necessary because there is no local field of that name where the type can be derived from. * then I tested it and made several changes in the generator such that it really works. Basically the generated code is as follows: * The parameter appears on the parameter list of the sizeof-function of the parametrized struct. When that function gets called, an appropriate argument is supplied. * The parameter also appears as an additional member of the iterator-struct for the iterator of lists of that parametrized struct. This way, the next-function can get the value of that parameter from the iterator. When the iterator is created, this iterator-member is set accordingly. * When the paramref appears in the length-expression of a list, then the parameter appears on the parameterlist of the "length" and "end" functions. When these functions get called, an appropriate argument is supplied. Some comments: * I did not implement inline structs. This would probably have been more complicated, and at least some additional effort. But that can be implemented later if needed. (Inline structs could probably use some code from switch-case/bitcase which is already kind of an inlined struct but one has to be careful not to break the functionality of switch-case/bitcase. Support for inline structs inside lists must probably be implemented from scratch...) * The paramref expression refers to a field of the same name in the struct/request/... where it is used. So it is not possible to pass the value of arbitrary fields or even expressions to the parametrized struct. This would have been possible with the previously discussed <typearg>. That can be added later, if needed. ( Wont be too complicated ) * So this is pretty much like the proposal from Ran Benita. changes for V2 of this patch, according to suggestions from Ran Benita: * replace map with list comprehension because map returns an iterator instead of a list from Python 3 on, so it cannot be added to a list anymore. * removed "self" parameter of function additional_params_to_str and accessed the variable additional_params from the outer function directly. changes for V2 of this patch: * adapt to revision 2 of patchset ListInputDevices * style fixes for similar things that Ran Benita has found in my previous patches Message-ID: <54574397.4060000@DemoRecorder.com> Patch-Thread-Subject: [Xcb] parametrized structs implemented Patch-Set: ParametrizedStruct Patch-Number: libxcb 1/1 Patch-Version: V3 Signed-off-by: Christian Linhart <chris@DemoRecorder.com>
2014-11-03generator: support listelement-refChristian Linhart
Support for listelement-ref needs the following three changes (in the order as they appear in the patch): * making the current list-element accessible with the variable xcb_listelement which is a pointer to the list-element * supporting lists of simple-type for sumof with a nested expression * using the variable for resolving a listelement-ref expression Changes for V2 of this patch: - adapt to removal of patch "libxcb 2/6" from patchset "ListInputDevices". Changes for V3 of this patch: - adapt to V2 of patch "libxcb 5/6" from patchset "ListInputDevices" Changes for V4 of this patch: - adapt to revision 2 of the patchset "ListInputDevices" Message-ID: <545743A0.50907@DemoRecorder.com> Patch-Thread-Subject: [Xcb] support popcount of a list and associated xml changes Patch-Set: PopcountList Patch-Number: libxcb 4/4 Patch-Version: V4 Signed-off-by: Christian Linhart <chris@DemoRecorder.com>
2014-11-03generator: _c_accessor_get_length: remove buggy special caseChristian Linhart
The function _c_accessor_get_length had a special case handling for intermixed var and fixed size fields. However: * The implementation of that special case was buggy: It tried to call a python-dict as a function which causes Python to abort the program with a stacktrace and error message. So this code was never used. * The case it tried to handle is handeled elsewhere in the meantime: in _c_helper_absolute_name by previous patches made by me. Message-ID: <1409845851-38950-3-git-send-email-chris@demorecorder.com> Patch-Thread-Subject: [Xcb] support popcount of a list and associated xml changes Patch-Set: PopcountList Patch-Number: libxcb 3/4 Patch-Version: V1 Signed-off-by: Christian Linhart <chris@DemoRecorder.com>
2014-11-03generator: generate accessors for events, tooChristian Linhart
Accessors are generally needed for var-sized fields and fields after var-sized fields. Generic events can have ver-sized fields. Therefore they need accessors. Message-ID: <1409845851-38950-2-git-send-email-chris@demorecorder.com> Patch-Thread-Subject: [Xcb] support popcount of a list and associated xml changes Patch-Set: PopcountList Patch-Number: libxcb 2/4 Patch-Version: V1 Signed-off-by: Christian Linhart <chris@DemoRecorder.com>
2014-11-03generator: no type-setup for eventcopies anymoreChristian Linhart
_c_type_setup is not called for eventcopies anymore: Reasons: * the type-setup of an eventcopy would overwrite members of the original event object such as c_type, ... * it is needed for the next patch, i.e., generating accessors: type_setup would create sizeof-etc funtions which called undefined accessor functions. Sizeof-functions are generated for compatibility: Reason: * Type-setup of eventcopies has previously generated sizeof-functions for eventcopies. So, we still need to generate these functions. These new sizeof-functions simply call the sizeof-function of the defining event of the eventcopy. Message-ID: <1409845851-38950-1-git-send-email-chris@demorecorder.com> Patch-Thread-Subject: [Xcb] support popcount of a list and associated xml changes Patch-Set: PopcountList Patch-Number: libxcb 1/4 Patch-Version: V1 Signed-off-by: Christian Linhart <chris@DemoRecorder.com>
2014-11-03_c_helper_fieldaccess_expr: remove handling for empty sepChristian Linhart
The loop-variable "sep" is never empty in function "_c_helper_fieldaccess_expr", after a fix elsewhere. Therefore I removed the handling of the case of "sep" being empty. Thanks to Ran Benita for the hint that this can be removed. Signed-off-by: Christian Linhart <chris@demorecorder.com> Reviewed-by: Ran Benita <ran234@gmail.com> Message-ID: <545627C2.3050608@DemoRecorder.com> Patch-Thread-Subject: [Xcb] [PATCHSET] ListInputDevices revision 2 Patch-Set: ListInputDevices Patch-Number: libxcb 9/9 Patch-Version: V1
2014-11-03function _c_helper_fieldaccess_expr: improve descriptionChristian Linhart
Signed-off-by: Christian Linhart <chris@demorecorder.com> Reviewed-by: Ran Benita <ran234@gmail.com> Message-ID: <545627BA.1000909@DemoRecorder.com> Patch-Thread-Subject: [Xcb] [PATCHSET] ListInputDevices revision 2 Patch-Set: ListInputDevices Patch-Number: libxcb 8/9 Patch-Version: V1
2014-11-03rename _c_helper_absolute_name to _c_helper_fieldaccess_exprChristian Linhart
The function _c_helper_absolute_name was named in a misleading way. It computes a C-expression for accessing a field of an xcb-type. Therefore the name _c_helper_fieldaccess_expr is more appropriate. Note: Patch 6 of this series has been removed during the review process. Signed-off-by: Christian Linhart <chris@demorecorder.com> Reviewed-by: Ran Benita <ran234@gmail.com> Message-ID: <545627AE.2040200@DemoRecorder.com> Patch-Thread-Subject: [Xcb] [PATCHSET] ListInputDevices revision 2 Patch-Set: ListInputDevices Patch-Number: libxcb 7/9 Patch-Version: V1
2014-11-03generator: sumof with nested expressionChristian Linhart
Support sumof with a nested expression. The nested expression is computed for every list-element and the result of the computation is added to the sum. This way, sumof can be applied to a list of structs, and, e.g., compute the sum of a specific field of that struct. example: <struct name="SumofTest_Element"> <field type="CARD16" name="foo" /> <field type="CARD16" name="bar" /> </struct> <struct name="SumofTest_FieldAccess"> <field type="CARD32" name="len" /> <list type="SumofTest_Element" name="mylist1"> <fieldref>len</fieldref> </list> <list type="CARD16" name="mylist2"> <sumof ref="mylist1"> <fieldref>bar</fieldref> </sumof> </list> </struct> generated tmpvar: int xcb_pre_tmp_1; /* sumof length */ int xcb_pre_tmp_2; /* sumof loop counter */ int64_t xcb_pre_tmp_3; /* sumof sum */ const xcb_input_sumof_test_element_t* xcb_pre_tmp_4; /* sumof list ptr */ generated code: /* mylist2 */ /* sumof start */ xcb_pre_tmp_1 = _aux->len; xcb_pre_tmp_3 = 0; xcb_pre_tmp_4 = xcb_input_sumof_test_field_access_mylist_1(_aux); for ( xcb_pre_tmp_2 = 0; xcb_pre_tmp_2 < xcb_pre_tmp_1; xcb_pre_tmp_2++) { xcb_pre_tmp_3 += xcb_pre_tmp_4->bar; xcb_pre_tmp_4++; } /* sumof end. Result is in xcb_pre_tmp_3 */ xcb_block_len += xcb_pre_tmp_3 * sizeof(uint16_t); changes for V2 of this patch: * explicitely set the member access operator in the prefix-tuple passed to function _c_helper_field_mapping. This enables us to simplify function "_c_helper_absolute_name" (which will be renamed "_c_helper_fieldaccess_expr" soon) V3: Changed style and formatting according to suggestions from Ran Benita Signed-off-by: Christian Linhart <chris@DemoRecorder.com> Reviewed-by: Ran Benita <ran234@gmail.com> Message-ID: <54562798.8040500@DemoRecorder.com> Patch-Thread-Subject: [Xcb] [PATCHSET] ListInputDevices revision 2 Patch-Set: ListInputDevices Patch-Number: libxcb 5/9 Patch-Version: V3
2014-11-03generator: sumof: support any type, generate explicit codeChristian Linhart
A sumof-expression now generates explicit code ( for-loop etc ) instead of calling xcb_sumof. This way, it supports any type which can be added. Previously, only uint_8 was supported. Here's an example and the generated code: xml: <struct name="SumofTest"> <field type="CARD32" name="len" /> <list type="CARD16" name="mylist1"> <fieldref>len</fieldref> </list> <list type="CARD8" name="mylist2"> <sumof ref="mylist1"/> </list> </struct> declaration of tempvars at the start of enclosing function: int xcb_pre_tmp_1; /* sumof length */ int xcb_pre_tmp_2; /* sumof loop counter */ int64_t xcb_pre_tmp_3; /* sumof sum */ const uint16_t* xcb_pre_tmp_4; /* sumof list ptr */ code: /* mylist2 */ /* sumof start */ xcb_pre_tmp_1 = _aux->len; xcb_pre_tmp_3 = 0; xcb_pre_tmp_4 = xcb_input_sumof_test_mylist_1(_aux); for ( xcb_pre_tmp_2 = 0; xcb_pre_tmp_2 < xcb_pre_tmp_1; xcb_pre_tmp_2++) { xcb_pre_tmp_3 += *xcb_pre_tmp_4; xcb_pre_tmp_4++; } /* sumof end. Result is in xcb_pre_tmp_3 */ xcb_block_len += xcb_pre_tmp_3 * sizeof(uint8_t); This patch is also a preparation for sumof which can access fields of lists of struct, etc. V2: Changed style and formatting according to suggestions from Ran Benita Signed-off-by: Christian Linhart <chris@DemoRecorder.com> Reviewed-by: Ran Benita <ran234@gmail.com> Message-ID: <54562774.8030306@DemoRecorder.com> Patch-Thread-Subject: [Xcb] [PATCHSET] ListInputDevices revision 2 Patch-Set: ListInputDevices Patch-Number: libxcb 4/9 Patch-Version: V2
2014-11-03generator: expressions can generate pre-codeChristian Linhart
This patch provides a mechanism for generating preparatory code for expressions. This is e.g. necessary when an expression needs computations which cannot be done in a C-Expression, like for-loops. This will be used for sumof expressions but may be useful elsewhere. Note: Patch 2 of this series has been removed during the review process. V2: adapt to changes in previous patches V3: some style and formatting changes according to suggestions from Ran Benita. Signed-off-by: Christian Linhart <chris@DemoRecorder.com> Reviewed-by: Ran Benita <ran234@gmail.com> Message-ID: <54562769.3090405@DemoRecorder.com> Patch-Thread-Subject: [Xcb] [PATCHSET] ListInputDevices revision 2 Patch-Set: ListInputDevices Patch-Number: libxcb 3/9 Patch-Version: V3
2014-11-03generator: fix absname for fields with only accessor functionChristian Linhart
Fix _c_helper_absolute_name for fields which cannot be accessed as a struct/union member but which can be accessed by an accessor function. The fix generates calls to the accessor function in these cases. Example: <struct name="AbsnameTest"> <field type="CARD32" name="len" /> <list type="CARD8" name="mylist1"> <fieldref>len</fieldref> </list> <list type="CARD8" name="mylist2"> <sumof ref="mylist1"/> </list> </struct> The sumof-expression ( <sumof ref="mylist1"/> ) refers to mylist1 which is only acessible by an accessor function. Previously, sumof was only used inside bitcases, where such lists are accessible by members of the deserialized parent struct. (there is a difference between deserialization of switches and structs.) V2 of this patch: * replaced "!= None" with "is not None" because that's more pythonic. (according to suggestion from Ran Benita) V3 of this patch: simplification: * fixed the recursion in _c_type_setup so that _c_helper_absolute_name does not need check a gazillion things as a workaround anymore. * simplified _c_helper_absolute_name - remove unneeded check for empty string before append of last_sep to prefix_str - removed those if-conditions which are not needed anymore after fixing the recursion in _c_type_setup. - extract functionality for checking whether a field needs an accessor ( and which type of accessor ) in functions. (also extracted from _c_accessors) - rearrange the condition branches and actions for more readability. V3 generates exactly the same *.c and *.h files as V2. V4 of this patch: * improve formatting as per suggestions of Ran Signed-off-by: Christian Linhart <chris@DemoRecorder.com> Reviewed-by: Ran Benita <ran234@gmail.com> Message-ID: <54562758.5090107@DemoRecorder.com> Patch-Thread-Subject: [Xcb] [PATCHSET] ListInputDevices revision 2 Patch-Set: ListInputDevices Patch-Number: libxcb 1/9 Patch-Version: V4
2014-10-30Merge branch 'NestedStructTypenames-V5' of ↵Peter Harris
http://infra-srv1.demorecorder.com/git/free-sw/xcb/libxcb
2014-10-20no typename for nested structsChristian Linhart
Nested structs which are generated for named case and bitcase do not get a typename anymore, i.e., they are anonymous structs. Reasons for this change: * Prior typenames have caused nameclashes * Prior typenames introduced names in the global namespace which did not start with the xcb prefix. This change is safe with respect to API compatibility because: I have searched for instances of named bitcases and there's only one place where they are used, and that's in xkb.xml: reply GetKbdByName. ( no need to search for <case> because it was introduced after the last release ) The reply GetKbdByName is broken in its current form in the xkb.xml anyways, so it is most probably not used anywhere. So, my conclusion is that we can safely omit named types for nested structs. No need for an attribute. Message-ID: <1409731849-51897-1-git-send-email-chris@demorecorder.com> Patch-Thread-Subject: Re: [Xcb] names of nested structs of named bitcase/case are prone to nameclashes. Solution? Patch-Set: NestedStructTypenames Patch-Number: libxcb 1/1 Patch-Version: V1 Signed-off-by: Christian Linhart <chris@DemoRecorder.com> Reviewed-By: Ran Benita <ran234@gmail.com>
2014-10-20generator: fix align-pads for switches which start at unaligned posChristian Linhart
Fix the alignment computation inside switches which start at an unaligned pos. This affects both explicit and implicit align pads. The alignment offset is derived from the lowest 3 bits of the pointer to the protocol-data at the start of the switch. This is sufficient for correcting all alignments up to 8-byte alignment. As far as I know there is no bigger alignment than 8-byte for the X-protocol. Example: struct InputState, where the switch starts after two 1-byte fields, which is a 2 byte offset for 4-byte and 8-byte alignment. The previous problem can be demonstrated when adding a <pad align="4"/> at the end of case "key". (Or when finding a testcase which reports the case "valuator" not at the last position of the QueryDeviceState-reply. I didn't find such a testcase, so I have used the pad align as described above.) V2: patch modified in order to fix bugs which I found when working on the next issue: * xcb_padding_offset has to be set 0 when xcb_block_len is set 0 * xcb_padding_offset cannot be "const" therefore * for unpack and unserialize, the padding_offset must computed from _buffer instead of from the aux_var. V3: patch revised according to suggestion by Ran Benita: * only create and use xcb_padding_offset for switch Message-ID: <1410298000-24734-1-git-send-email-chris@demorecorder.com> Patch-Thread-Subject: [Xcb] xinput:QueryDeviceState: full-support: generator and xml-changes Patch-Set: QueryDeviceState Patch-Number: libxcb 4/4 Patch-Version: V3 Signed-off-by: Christian Linhart <chris@DemoRecorder.com> Reviewed-By: Ran Benita <ran234@gmail.com>
2014-10-20generator: support lists of structs which contain a switchChristian Linhart
This essentially requires to have a correct sizeof-function for the struct. This in turn requires a sizeof-function for the switch, too. Making a sizeof-function for the switch is triggered by replacing "elif" by "if" in the first change of this patch. This way, c_need_sizeof is also set to True for switches if appropriate. The _c_serialize_helper_switch_field function has to support the context "sizeof": This is done in the second change of this patch The third change of this patch fixes an alignment error: It does not make sense to base the padding on the struct-type which is generated for switch because this struct does not represent the protocol. Rather it is the output of deserialization. ( The implicit padding for var-sized fields has other issues, IMHO, but I am not touching these now...) The effect on the generated code for the current xml-files is as follows: * several additional sizeof-functions are generated * the fix of the alignment error only changes one place in the XKB-extension for the GetKbdByName-reply. This is no problem because that reply in its current form is broken/unfinished anyways. Note: This patch also fixes a problem in the generator when a fixed-size list is the last field of a case or bitcase. Message-ID: <1408653356-21191-2-git-send-email-chris@demorecorder.com> Patch-Thread-Subject: [Xcb] xinput:QueryDeviceState: full-support: generator and xml-changes Patch-Set: QueryDeviceState Patch-Number: libxcb 2/3 Patch-Version: V1 Signed-off-by: Christian Linhart <chris@DemoRecorder.com> Reviewed-By: Ran Benita <ran234@gmail.com>
2014-10-03Move internal/private dependencies to Requires.privateEmil Velikov
Program using the xcb sub-modules has indirect compile and runtime dependency of core xcb. To ensure this out we currently list xcb in the Requires field of the pkg-config files. While this provides all the required dependencies for successful compilation this causes over-linking and hides potential linking miss-use against the xcb modules. By moving to Requires.private we retain the compilation and runtime compatibility and avoids any runtime problems. Cc: Keith Packard <keithp@keithp.com> Cc: Alan Coopersmith <alan.coopersmith@oracle.com> References: http://people.freedesktop.org/~dbn/pkg-config-guide.html#faq References: https://wiki.mageia.org/en/Overlinking_issues_in_packaging References: http://err.no/personal/blog/2008/Mar/25 Signed-off-by: Emil Velikov <emil.l.velikov@gmail.com> Reviewed-by: Julien Cristau <jcristau@debian.org> Signed-off-by: Uli Schlachter <psychon@znc.in>
2014-09-09generator: support fixed size lists in var-sized structsChristian Linhart
V2: patch revised according to suggestions from Ran Benita: * removed blanks before an after parentheses of function-calls or tuples * replaced if by elif in "if field.type.is_list". ( this fixes old code ) Message-ID: <540B4D17.1080908@DemoRecorder.com> Patch-Thread-Subject: [Xcb] xinput:QueryDeviceState: full-support: generator and xml-changes Patch-Set: QueryDeviceState Patch-Number: libxcb 1/3 Patch-Version: V2 Signed-off-by: Christian Linhart <chris@DemoRecorder.com> Reviewed-By: Ran Benita <ran234@gmail.com>
2014-08-25xcb_get_setup(): Never return NULLUli Schlachter
The documentation doesn't mention it and it's unlikely that a lot of code out there handles this case correctly. So, instead of returning NULL, let xcb_get_setup() return a pointer to a static, invalid, all-zero setup information structure. Signed-off-by: Uli Schlachter <psychon@znc.in>
2014-08-25Make some functions also work on error connectionsUli Schlachter
There is no technical reason why xcb_get_setup() and xcb_get_file_descriptor() shouldn't work on non-static error connections. They cannot be used for many useful things, but at least they work. This works around bugs in lots of programs out there which assume that xcb_get_setup() does not return NULL and which just happily dereference the results. Since xcb_connect() never returns NULL, it's a bit weird that xcb_get_setup() can do so. xcb_get_file_descriptor() is just modified since this can be done here equally easily and because the fd isn't closed until the final xcb_disconnect() on the error connection. Non-static error connections are connections which entered an error state after xcb_connect() succeeded. If something goes wrong in establishing a connection, xcb_connect() will return a static error connection which doesn't have the fields used here. Signed-off-by: Uli Schlachter <psychon@znc.in>
2014-08-20support switch case in the generatorChristian Linhart
The implementation is rather simple: When a <case> is used instead of a <bitcase> then operator "==" is used instead of "&" in the if-condition. So it creates a series of "if" statements (instead of a switch-case statement in C ) In practice this does not matter because a good optimizing compiler will create the same code as for a switch-case. With this simple implementation we get additional flexibility in the following forms: * a case value may appear in multiple case branches. for example: case C1 will be selected by values 1, 4, or 5 case C2 will be selected by values 3, 4, or 7 * mixing of bitcase and case is possible (this will usually make no sense but there may be protocol specs where this is needed) details of the impl: * replaced "is_bitcase" with "is_case_or_bitcase" in all places so that cases are treated like bitcases. * In function "_c_serialize_helper_switch": write operator "==" instead of operator "&" if it is a case.
2014-08-06Disable Xevie and Xprint by defaultDaniel Martin
Both extensions have been dropped from the X-Server in 2008: http://cgit.freedesktop.org/xorg/xserver/commit/?id=1c8bd31 http://cgit.freedesktop.org/xorg/xserver/commit/?id=f4036f6 Don't build them by default. Reviewed-by: Julien Cristau <jcristau@debian.org> Signed-off-by: Daniel Martin <consume.noise@gmail.com> Signed-off-by: Uli Schlachter <psychon@znc.in>
2014-08-06help text: do not report the insanly long list of Warning flags.Gaetan Nadon
Originally there was just one. Now that XCB has been integrated with X and uses the same compiler flags, it is a different story. Used CFLAGS: CPPFLAGS............: CFLAGS..............: -g -O2 Warning CFLAGS......: -Wall -Wpointer-arith AND SO ON FOR 8 lines... It completely defaces the otherwise excellent output. Reviewed-by: Josh Triplett <josh@joshtriplett.org> Signed-off-by: Gaetan Nadon <memsize@videotron.ca> Signed-off-by: Uli Schlachter <psychon@znc.in>
2014-08-06Add ChangeLog and INSTALL using xorg macrosGaetan Nadon
Same as all other X modules. The one in libxcb git is removed. Those files are created during 'make dist' Reviewed-by: Josh Triplett <josh@joshtriplett.org> Signed-off-by: Gaetan Nadon <memsize@videotron.ca> Signed-off-by: Uli Schlachter <psychon@znc.in>
2014-08-06sendmsg: remove --enable-sendfds as it is superceeded by --enable-dri3Gaetan Nadon
DRI3 requires sendmsg support which is auto-detected. A builder can enable or disable dri3 feature. If sendmsg function is not available, dri3 cannot be enabled. This reverts af8067cbf4856 which was done at a time where --enable-dri3 had not been added yet. Reviewed-by: Josh Triplett <josh@joshtriplett.org> Signed-off-by: Gaetan Nadon <memsize@videotron.ca> Signed-off-by: Uli Schlachter <psychon@znc.in>
2014-08-06config: issue an error if DRI3 is requested, but sendfds is not availableGaetan Nadon
When a user issues the --enable-dri3 option and sendfds is not available on the system, the configuration will abort with an error message. Reviewed-by: Josh Triplett <josh@joshtriplett.org> Signed-off-by: Gaetan Nadon <memsize@videotron.ca> Signed-off-by: Uli Schlachter <psychon@znc.in>
2014-08-06config: default option for enable-dri3 is not implementedGaetan Nadon
The first symptom is the help text: --enable-dri3 Build XCB DRI3 Extension (default: "$sendfds") The implementation variable $sendfds leaked into the user interface. Testing the various user inputs: <nothing> DRI3 is enabled PASS --enable-dri3 DRI3 is enabled PASS --enable-dri3=yes DRI3 is enabled PASS --enable-dri3=no DRI3 is disabled PASS --disable-dri3 DRI3 is disabled PASS --enable-dri3=$sendfds DRI3 is disabled FAIL This patch implements the usual idiom for features that are enabled by default if the various conditions are met (sendfds is available). New help text: --enable-dri3 Build XCB DRI3 Extension (default: auto) With the additional user input: --enable-dri3=auto which is equivalent to providing no input at all. Reviewed-by: Josh Triplett <josh@joshtriplett.org> Signed-off-by: Gaetan Nadon <memsize@videotron.ca> Signed-off-by: Uli Schlachter <psychon@znc.in>
2014-08-01Release libxcb 1.111.11Uli Schlachter
2014-08-01Bump xcb-proto requirement to 1.11Uli Schlachter
This is needed for the new direct_imports field that we need from xcb-proto. Signed-off-by: Uli Schlachter <psychon@znc.in>