{"action":"created","issue":{"url":"https://api.github.com/repos/SFML/SFML/issues/1138","repository_url":"https://api.github.com/repos/SFML/SFML","labels_url":"https://api.github.com/repos/SFML/SFML/issues/1138/labels{/name}","comments_url":"https://api.github.com/repos/SFML/SFML/issues/1138/comments","events_url":"https://api.github.com/repos/SFML/SFML/issues/1138/events","html_url":"https://github.com/SFML/SFML/pull/1138","id":172929466,"number":1138,"title":"Converted Unix Window implementation from XCB back to Xlib.","user":{"login":"binary1248","id":949359,"avatar_url":"https://avatars.githubusercontent.com/u/949359?v=3","gravatar_id":"","url":"https://api.github.com/users/binary1248","html_url":"https://github.com/binary1248","followers_url":"https://api.github.com/users/binary1248/followers","following_url":"https://api.github.com/users/binary1248/following{/other_user}","gists_url":"https://api.github.com/users/binary1248/gists{/gist_id}","starred_url":"https://api.github.com/users/binary1248/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/binary1248/subscriptions","organizations_url":"https://api.github.com/users/binary1248/orgs","repos_url":"https://api.github.com/users/binary1248/repos","events_url":"https://api.github.com/users/binary1248/events{/privacy}","received_events_url":"https://api.github.com/users/binary1248/received_events","type":"User","site_admin":false},"labels":[{"url":"https://api.github.com/repos/SFML/SFML/labels/bug","name":"bug","color":"ff4242"},{"url":"https://api.github.com/repos/SFML/SFML/labels/m:sfml-window","name":"m:sfml-window","color":"cccccc"},{"url":"https://api.github.com/repos/SFML/SFML/labels/p:linux","name":"p:linux","color":"888888"},{"url":"https://api.github.com/repos/SFML/SFML/labels/s:accepted","name":"s:accepted","color":"207de5"}],"state":"open","locked":false,"assignee":{"login":"binary1248","id":949359,"avatar_url":"https://avatars.githubusercontent.com/u/949359?v=3","gravatar_id":"","url":"https://api.github.com/users/binary1248","html_url":"https://github.com/binary1248","followers_url":"https://api.github.com/users/binary1248/followers","following_url":"https://api.github.com/users/binary1248/following{/other_user}","gists_url":"https://api.github.com/users/binary1248/gists{/gist_id}","starred_url":"https://api.github.com/users/binary1248/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/binary1248/subscriptions","organizations_url":"https://api.github.com/users/binary1248/orgs","repos_url":"https://api.github.com/users/binary1248/repos","events_url":"https://api.github.com/users/binary1248/events{/privacy}","received_events_url":"https://api.github.com/users/binary1248/received_events","type":"User","site_admin":false},"assignees":[{"login":"binary1248","id":949359,"avatar_url":"https://avatars.githubusercontent.com/u/949359?v=3","gravatar_id":"","url":"https://api.github.com/users/binary1248","html_url":"https://github.com/binary1248","followers_url":"https://api.github.com/users/binary1248/followers","following_url":"https://api.github.com/users/binary1248/following{/other_user}","gists_url":"https://api.github.com/users/binary1248/gists{/gist_id}","starred_url":"https://api.github.com/users/binary1248/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/binary1248/subscriptions","organizations_url":"https://api.github.com/users/binary1248/orgs","repos_url":"https://api.github.com/users/binary1248/repos","events_url":"https://api.github.com/users/binary1248/events{/privacy}","received_events_url":"https://api.github.com/users/binary1248/received_events","type":"User","site_admin":false}],"milestone":{"url":"https://api.github.com/repos/SFML/SFML/milestones/15","html_url":"https://github.com/SFML/SFML/milestones/2.4.1","labels_url":"https://api.github.com/repos/SFML/SFML/milestones/15/labels","id":1931542,"number":15,"title":"2.4.1","description":"","creator":{"login":"mantognini","id":693483,"avatar_url":"https://avatars.githubusercontent.com/u/693483?v=3","gravatar_id":"","url":"https://api.github.com/users/mantognini","html_url":"https://github.com/mantognini","followers_url":"https://api.github.com/users/mantognini/followers","following_url":"https://api.github.com/users/mantognini/following{/other_user}","gists_url":"https://api.github.com/users/mantognini/gists{/gist_id}","starred_url":"https://api.github.com/users/mantognini/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mantognini/subscriptions","organizations_url":"https://api.github.com/users/mantognini/orgs","repos_url":"https://api.github.com/users/mantognini/repos","events_url":"https://api.github.com/users/mantognini/events{/privacy}","received_events_url":"https://api.github.com/users/mantognini/received_events","type":"User","site_admin":false},"open_issues":7,"closed_issues":12,"state":"open","created_at":"2016-08-09T07:31:59Z","updated_at":"2016-09-16T07:25:58Z","due_on":null,"closed_at":null},"comments":6,"created_at":"2016-08-24T11:38:37Z","updated_at":"2016-09-18T17:32:53Z","closed_at":null,"pull_request":{"url":"https://api.github.com/repos/SFML/SFML/pulls/1138","html_url":"https://github.com/SFML/SFML/pull/1138","diff_url":"https://github.com/SFML/SFML/pull/1138.diff","patch_url":"https://github.com/SFML/SFML/pull/1138.patch"},"body":"After almost 2 years of poking around XCB, it is time to declare defeat and go back to good old stable Xlib.\r\n\r\nIn retrospect, there weren't really many if any advantages for us in switching from Xlib to XCB in the first place. The main advantage users of XCB are supposed to have comes from its non-blocking nature. This might make sense in certain applications, however the way SFML interacts with the X server completely counteracts this usage pattern. There is simply no performance difference between using Xlib and XCB for SFML. The second advantage users of XCB are supposed to have is \"less legacy (buggy) code\" in its implementation. Being a thin (autogenerated) wrapper on top of the X wire protocol, I think it is kind of obvious: If there is no implementation to speak of, there also can't be that many bugs.\r\n\r\nWe take for granted how many other things Xlib actually does for us on the side. Those things were supposed to be supported in XCB at some point as well, but considering that it is an open source project and Wayland is arriving faster than many anticipated, one can understand the lack of motivation to continue development on XCB.\r\n\r\nEven when using XCB, SFML still has to make use of Xlib to interact with GLX since that is still the primary API that the graphics drivers expose to this day. Mixing Xlib and XCB is a nightmare as well, which is why I already reverted the event processing back to using Xlib events a while ago.\r\n\r\nThe Unix sfml-window implementation could be considered relatively stable up to 2.2. Most of the instability came in 2.3 when we switched over to XCB. This PR seeks to restore the stability of 2.2 so that we can focus our efforts on other more pressing issues and remain an attractive library for users on Unix platforms. Once Wayland support becomes ubiquitous, we can consider supporting it in parallel to Xlib.\r\n\r\nFixes #1089 and possibly other bugs (requires re-evaluation if this gets accepted)."},"comment":{"url":"https://api.github.com/repos/SFML/SFML/issues/comments/247861299","html_url":"https://github.com/SFML/SFML/pull/1138#issuecomment-247861299","issue_url":"https://api.github.com/repos/SFML/SFML/issues/1138","id":247861299,"user":{"login":"MarioLiebisch","id":1854245,"avatar_url":"https://avatars.githubusercontent.com/u/1854245?v=3","gravatar_id":"","url":"https://api.github.com/users/MarioLiebisch","html_url":"https://github.com/MarioLiebisch","followers_url":"https://api.github.com/users/MarioLiebisch/followers","following_url":"https://api.github.com/users/MarioLiebisch/following{/other_user}","gists_url":"https://api.github.com/users/MarioLiebisch/gists{/gist_id}","starred_url":"https://api.github.com/users/MarioLiebisch/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/MarioLiebisch/subscriptions","organizations_url":"https://api.github.com/users/MarioLiebisch/orgs","repos_url":"https://api.github.com/users/MarioLiebisch/repos","events_url":"https://api.github.com/users/MarioLiebisch/events{/privacy}","received_events_url":"https://api.github.com/users/MarioLiebisch/received_events","type":"User","site_admin":false},"created_at":"2016-09-18T17:32:53Z","updated_at":"2016-09-18T17:32:53Z","body":">> Did you rerun CMake as well?\r\n> Sure. I think the change in the list of referenced libraries confirms that.\r\n\r\nThat's completely normal, since xcb will be loaded (or even injected?) by some X11 stuff. It's showing up in that list due to the way LDD works.\r\n\r\nRunning `ldd lib/libsfml-window.so`:\r\n\r\n```\r\n    linux-vdso.so.1 =>  (0x00007ffd7e2ec000)\r\n    libsfml-system.so.2.4 => /home/mario/git/SFML/lib/libsfml-system.so.2.4 (0x00007fee94d4f000)\r\n    libX11.so.6 => /usr/lib/x86_64-linux-gnu/libX11.so.6 (0x00007fee94a06000)\r\n    libXrandr.so.2 => /usr/lib/x86_64-linux-gnu/libXrandr.so.2 (0x00007fee947fa000)\r\n    libudev.so.1 => /lib/x86_64-linux-gnu/libudev.so.1 (0x00007fee947da000)\r\n    libGL.so.1 => /usr/lib/x86_64-linux-gnu/mesa/libGL.so.1 (0x00007fee94569000)\r\n    libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007fee9434b000)\r\n    libstdc++.so.6 => /usr/lib/x86_64-linux-gnu/libstdc++.so.6 (0x00007fee93fc9000)\r\n    libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007fee93db3000)\r\n    libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007fee939e9000)\r\n    librt.so.1 => /lib/x86_64-linux-gnu/librt.so.1 (0x00007fee937e1000)\r\n    libxcb.so.1 => /usr/lib/x86_64-linux-gnu/libxcb.so.1 (0x00007fee935bf000)\r\n    libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007fee933ba000)\r\n    libXext.so.6 => /usr/lib/x86_64-linux-gnu/libXext.so.6 (0x00007fee931a8000)\r\n    libXrender.so.1 => /usr/lib/x86_64-linux-gnu/libXrender.so.1 (0x00007fee92f9e000)\r\n    /lib64/ld-linux-x86-64.so.2 (0x00005591d8db2000)\r\n    libexpat.so.1 => /lib/x86_64-linux-gnu/libexpat.so.1 (0x00007fee92d74000)\r\n    libxcb-dri3.so.0 => /usr/lib/x86_64-linux-gnu/libxcb-dri3.so.0 (0x00007fee92b71000)\r\n    libxcb-present.so.0 => /usr/lib/x86_64-linux-gnu/libxcb-present.so.0 (0x00007fee9296e000)\r\n    libxcb-sync.so.1 => /usr/lib/x86_64-linux-gnu/libxcb-sync.so.1 (0x00007fee92766000)\r\n    libxshmfence.so.1 => /usr/lib/x86_64-linux-gnu/libxshmfence.so.1 (0x00007fee92563000)\r\n    libglapi.so.0 => /usr/lib/x86_64-linux-gnu/libglapi.so.0 (0x00007fee92335000)\r\n    libXdamage.so.1 => /usr/lib/x86_64-linux-gnu/libXdamage.so.1 (0x00007fee92131000)\r\n    libXfixes.so.3 => /usr/lib/x86_64-linux-gnu/libXfixes.so.3 (0x00007fee91f2b000)\r\n    libX11-xcb.so.1 => /usr/lib/x86_64-linux-gnu/libX11-xcb.so.1 (0x00007fee91d29000)\r\n    libxcb-glx.so.0 => /usr/lib/x86_64-linux-gnu/libxcb-glx.so.0 (0x00007fee91b0f000)\r\n    libxcb-dri2.so.0 => /usr/lib/x86_64-linux-gnu/libxcb-dri2.so.0 (0x00007fee9190a000)\r\n    libXxf86vm.so.1 => /usr/lib/x86_64-linux-gnu/libXxf86vm.so.1 (0x00007fee91704000)\r\n    libdrm.so.2 => /usr/lib/x86_64-linux-gnu/libdrm.so.2 (0x00007fee914f4000)\r\n    libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007fee911eb000)\r\n    libXau.so.6 => /usr/lib/x86_64-linux-gnu/libXau.so.6 (0x00007fee90fe6000)\r\n    libXdmcp.so.6 => /usr/lib/x86_64-linux-gnu/libXdmcp.so.6 (0x00007fee90de0000)\r\n```\r\n\r\nBut you can also read that information directly from the binary using `readelf -b lib/libsfml-window.so | grep NEEDED`:\r\n\r\n    0x0000000000000001 (NEEDED)             Shared library: [libsfml-system.so.2.4]\r\n    0x0000000000000001 (NEEDED)             Shared library: [libX11.so.6]\r\n    0x0000000000000001 (NEEDED)             Shared library: [libXrandr.so.2]\r\n    0x0000000000000001 (NEEDED)             Shared library: [libudev.so.1]\r\n    0x0000000000000001 (NEEDED)             Shared library: [libGL.so.1]\r\n    0x0000000000000001 (NEEDED)             Shared library: [libpthread.so.0]\r\n    0x0000000000000001 (NEEDED)             Shared library: [libstdc++.so.6]\r\n    0x0000000000000001 (NEEDED)             Shared library: [libgcc_s.so.1]\r\n    0x0000000000000001 (NEEDED)             Shared library: [libc.so.6]\r\n\r\nAs you can see, everything is fine, no direct reference to XCB anymore. :)"}}
{"actor":{"display_login":"MarioLiebisch"}}