Merge branch 'X11Libre:master' into patch-2
This commit is contained in:
commit
6d6a74f92c
|
@ -0,0 +1,65 @@
|
||||||
|
name: 🐞 Bug report
|
||||||
|
description: Create a report to help us improve
|
||||||
|
|
||||||
|
labels: [bug, needs-triage]
|
||||||
|
#type: bug
|
||||||
|
|
||||||
|
body:
|
||||||
|
- type: markdown
|
||||||
|
attributes:
|
||||||
|
value: |
|
||||||
|
Please fill out the sections below to help everyone identify and fix the bug. If you have a general idea or question then please use the [discussions](https://github.com/orgs/X11Libre/discussions).
|
||||||
|
- type: dropdown
|
||||||
|
id: affected-version
|
||||||
|
attributes:
|
||||||
|
label: Select the version
|
||||||
|
options:
|
||||||
|
- 25.0.0.X
|
||||||
|
- Git master branch
|
||||||
|
- other or don't know
|
||||||
|
default: 1
|
||||||
|
validations:
|
||||||
|
required: true
|
||||||
|
- type: textarea
|
||||||
|
id: description
|
||||||
|
attributes:
|
||||||
|
label: Describe your issue
|
||||||
|
placeholder: When I did X then Y happened.
|
||||||
|
validations:
|
||||||
|
required: true
|
||||||
|
- type: textarea
|
||||||
|
id: steps
|
||||||
|
attributes:
|
||||||
|
label: Steps to reproduce
|
||||||
|
placeholder: |
|
||||||
|
1. Start ...
|
||||||
|
2. Do this
|
||||||
|
3. Do that
|
||||||
|
validations:
|
||||||
|
required: true
|
||||||
|
- type: textarea
|
||||||
|
id: expected
|
||||||
|
attributes:
|
||||||
|
label: What did you expect?
|
||||||
|
placeholder: I expected this to happen.
|
||||||
|
- type: textarea
|
||||||
|
id: environment
|
||||||
|
attributes:
|
||||||
|
label: Additional Information
|
||||||
|
description: Additional information you want to provide such as logs, system info, environment, screenshots, etc.
|
||||||
|
placeholder: |
|
||||||
|
Add any other context about the bug here.
|
||||||
|
- type: checkboxes
|
||||||
|
id: checks
|
||||||
|
attributes:
|
||||||
|
label: Extra fields
|
||||||
|
options:
|
||||||
|
- label: I have checked the existing [issues](https://github.com/X11Libre/xserver/issues)
|
||||||
|
required: true
|
||||||
|
- label: I have read the [Contributing Guidelines](https://github.com/X11Libre/xserver/blob/master/CONTRIBUTING.md)
|
||||||
|
required: true
|
||||||
|
- label: I'd like to work on this issue
|
||||||
|
- type: markdown
|
||||||
|
attributes:
|
||||||
|
value: |
|
||||||
|
Thanks for reporting this issue! We will get back to you as soon as possible.
|
|
@ -0,0 +1,49 @@
|
||||||
|
name: ✨ Feature request
|
||||||
|
description: Suggest a feature for this software
|
||||||
|
labels: [enhancement, needs-triage]
|
||||||
|
|
||||||
|
body:
|
||||||
|
- type: markdown
|
||||||
|
attributes:
|
||||||
|
value: |
|
||||||
|
Please fill out the sections below to properly describe the new software feature you are suggesting. If you have a general idea or question then please use the [discussions](https://github.com/orgs/X11Libre/discussions).
|
||||||
|
- type: textarea
|
||||||
|
id: description
|
||||||
|
attributes:
|
||||||
|
label: "Describe the feature"
|
||||||
|
placeholder: A thing in X that allows to do Y.
|
||||||
|
validations:
|
||||||
|
required: true
|
||||||
|
- type: textarea
|
||||||
|
id: rationale
|
||||||
|
attributes:
|
||||||
|
label: "It should be implemented because"
|
||||||
|
placeholder: Doing Y is needed for Z.
|
||||||
|
validations:
|
||||||
|
required: true
|
||||||
|
- type: textarea
|
||||||
|
id: alternative
|
||||||
|
attributes:
|
||||||
|
label: "What are the alternatives?"
|
||||||
|
placeholder: We could do A or B instead.
|
||||||
|
- type: textarea
|
||||||
|
id: context
|
||||||
|
attributes:
|
||||||
|
label: Additional context
|
||||||
|
description: Additional information you want to provide such as references to related issues or protocols, the implications on existing use cases, etc.
|
||||||
|
placeholder: |
|
||||||
|
Add any other context about the feature request here.
|
||||||
|
- type: checkboxes
|
||||||
|
id: checks
|
||||||
|
attributes:
|
||||||
|
label: Extra fields
|
||||||
|
options:
|
||||||
|
- label: I have checked the existing [issues](https://github.com/X11Libre/xserver/issues)
|
||||||
|
required: true
|
||||||
|
- label: I have read the [Contributing Guidelines](https://github.com/X11Libre/xserver/blob/master/CONTRIBUTING.md)
|
||||||
|
required: true
|
||||||
|
- label: I'd like to work on this issue
|
||||||
|
- type: markdown
|
||||||
|
attributes:
|
||||||
|
value: |
|
||||||
|
Thanks for your suggestion! Let's see together if it can be implemented.
|
|
@ -0,0 +1,50 @@
|
||||||
|
name: 🔧 Code cleanup
|
||||||
|
description: Level up the source code
|
||||||
|
labels: [code-cleanup, needs-triage]
|
||||||
|
#type: codecleanup
|
||||||
|
|
||||||
|
body:
|
||||||
|
- type: markdown
|
||||||
|
attributes:
|
||||||
|
value: |
|
||||||
|
Please fill out the sections below to properly describe the code cleanup you are suggesting. If you have a general idea or question then please use the [discussions](https://github.com/orgs/X11Libre/discussions).
|
||||||
|
- type: textarea
|
||||||
|
id: description
|
||||||
|
attributes:
|
||||||
|
label: "Describe the cleanup"
|
||||||
|
placeholder: C in X needs to be changed into D.
|
||||||
|
validations:
|
||||||
|
required: true
|
||||||
|
- type: textarea
|
||||||
|
id: rationale
|
||||||
|
attributes:
|
||||||
|
label: "It should be done because"
|
||||||
|
placeholder: Having D is needed for E.
|
||||||
|
validations:
|
||||||
|
required: true
|
||||||
|
- type: textarea
|
||||||
|
id: alternative
|
||||||
|
attributes:
|
||||||
|
label: "What are the alternatives?"
|
||||||
|
placeholder: We could do A or B instead.
|
||||||
|
- type: textarea
|
||||||
|
id: context
|
||||||
|
attributes:
|
||||||
|
label: Additional context
|
||||||
|
description: Additional information you want to provide such as implications on existing code, how to ensure API/ABI stability, which tests are needed or to be run, related issues, etc.
|
||||||
|
placeholder: |
|
||||||
|
Add any other context about the cleanup here.
|
||||||
|
- type: checkboxes
|
||||||
|
id: checks
|
||||||
|
attributes:
|
||||||
|
label: Extra fields
|
||||||
|
options:
|
||||||
|
- label: I have checked the existing [issues](https://github.com/X11Libre/xserver/issues)
|
||||||
|
required: true
|
||||||
|
- label: I have read the [Contributing Guidelines](https://github.com/X11Libre/xserver/blob/master/CONTRIBUTING.md)
|
||||||
|
required: true
|
||||||
|
- label: I'd like to work on this issue
|
||||||
|
- type: markdown
|
||||||
|
attributes:
|
||||||
|
value: |
|
||||||
|
Thanks for looking at the source code! Let's see together how it can be improved.
|
|
@ -0,0 +1,39 @@
|
||||||
|
name: 🔖 Documentation update
|
||||||
|
description: Make your mark for better documentation
|
||||||
|
|
||||||
|
labels: [documentation, needs-triage]
|
||||||
|
#type: docchange
|
||||||
|
|
||||||
|
body:
|
||||||
|
- type: markdown
|
||||||
|
attributes:
|
||||||
|
value: |
|
||||||
|
Please fill out the sections below to help others understand our software. If you have a general idea or question then please use the [discussions](https://github.com/orgs/X11Libre/discussions).
|
||||||
|
- type: textarea
|
||||||
|
id: description
|
||||||
|
attributes:
|
||||||
|
label: Describe the update
|
||||||
|
placeholder: These things need to be better documented.
|
||||||
|
validations:
|
||||||
|
required: true
|
||||||
|
- type: textarea
|
||||||
|
id: environment
|
||||||
|
attributes:
|
||||||
|
label: Additional Information
|
||||||
|
description: Additional information you want to provide such as tickets related to changes in the software, affected files, screenshots, etc.
|
||||||
|
placeholder: |
|
||||||
|
Add any other context about the update here.
|
||||||
|
- type: checkboxes
|
||||||
|
id: checks
|
||||||
|
attributes:
|
||||||
|
label: Extra fields
|
||||||
|
options:
|
||||||
|
- label: I have checked the existing [issues](https://github.com/X11Libre/xserver/issues)
|
||||||
|
required: true
|
||||||
|
- label: I have read the [Contributing Guidelines](https://github.com/X11Libre/xserver/blob/master/CONTRIBUTING.md)
|
||||||
|
required: true
|
||||||
|
- label: I'd like to work on this issue
|
||||||
|
- type: markdown
|
||||||
|
attributes:
|
||||||
|
value: |
|
||||||
|
Thanks for requesting this update! We will get back to you as soon as possible.
|
|
@ -0,0 +1,44 @@
|
||||||
|
name: ✅ Organizational task
|
||||||
|
description: Create a task for project organization
|
||||||
|
|
||||||
|
labels: [needs-triage, organization]
|
||||||
|
#type: task
|
||||||
|
|
||||||
|
body:
|
||||||
|
- type: markdown
|
||||||
|
attributes:
|
||||||
|
value: |
|
||||||
|
Please fill out the sections below to get organizational things done. If you have a general idea or question then please use the [discussions](https://github.com/orgs/X11Libre/discussions).
|
||||||
|
- type: textarea
|
||||||
|
id: description
|
||||||
|
attributes:
|
||||||
|
label: Describe the task
|
||||||
|
placeholder: These things need to be done.
|
||||||
|
validations:
|
||||||
|
required: true
|
||||||
|
- type: textarea
|
||||||
|
id: rationale
|
||||||
|
attributes:
|
||||||
|
label: "It should be done because"
|
||||||
|
placeholder: Doing Y is needed for Z.
|
||||||
|
- type: textarea
|
||||||
|
id: environment
|
||||||
|
attributes:
|
||||||
|
label: Additional Information
|
||||||
|
description: Additional information you want to provide such as the context for bigger tasks, the implicatons on existing workflows, related issues, etc.
|
||||||
|
placeholder: |
|
||||||
|
Add any other context about the task here.
|
||||||
|
- type: checkboxes
|
||||||
|
id: checks
|
||||||
|
attributes:
|
||||||
|
label: Extra fields
|
||||||
|
options:
|
||||||
|
- label: I have checked the existing [issues](https://github.com/X11Libre/xserver/issues)
|
||||||
|
required: true
|
||||||
|
- label: I have read the [Contributing Guidelines](https://github.com/X11Libre/xserver/blob/master/CONTRIBUTING.md)
|
||||||
|
required: true
|
||||||
|
- label: I'd like to work on this issue
|
||||||
|
- type: markdown
|
||||||
|
attributes:
|
||||||
|
value: |
|
||||||
|
Thanks for adding this task! We will get back to you as soon as possible.
|
|
@ -0,0 +1,8 @@
|
||||||
|
blank_issues_enabled: false
|
||||||
|
contact_links:
|
||||||
|
- name: XLibre Community Support
|
||||||
|
url: https://github.com/orgs/X11Libre/discussions
|
||||||
|
about: Please ask and answer questions here.
|
||||||
|
- name: Mailing List
|
||||||
|
url: https://www.freelists.org/list/xlibre
|
||||||
|
about: You can join the discussions on our mailing list.
|
|
@ -14,6 +14,7 @@ cd $DRV_BUILD_DIR
|
||||||
build_drv_ac xf86-input-elographics $X11L_DRV_GIT/xf86-input-elographics master
|
build_drv_ac xf86-input-elographics $X11L_DRV_GIT/xf86-input-elographics master
|
||||||
build_drv_ac xf86-input-evdev $X11L_DRV_GIT/xf86-input-evdev master
|
build_drv_ac xf86-input-evdev $X11L_DRV_GIT/xf86-input-evdev master
|
||||||
build_drv_ac xf86-input-libinput $X11L_DRV_GIT/xf86-input-libinput master
|
build_drv_ac xf86-input-libinput $X11L_DRV_GIT/xf86-input-libinput master
|
||||||
|
build_drv_ac xf86-input-mouse $X11L_DRV_GIT/xf86-input-mouse master
|
||||||
build_drv_ac xf86-input-synaptics $X11L_DRV_GIT/xf86-input-synaptics master
|
build_drv_ac xf86-input-synaptics $X11L_DRV_GIT/xf86-input-synaptics master
|
||||||
|
|
||||||
build_drv_ac xf86-video-amdgpu $X11L_DRV_GIT/xf86-video-amdgpu xf86-video-amdgpu-23.0.0
|
build_drv_ac xf86-video-amdgpu $X11L_DRV_GIT/xf86-video-amdgpu xf86-video-amdgpu-23.0.0
|
||||||
|
|
|
@ -1,6 +1,13 @@
|
||||||
export X11_PREFIX=/home/runner/x11
|
export X11_OS=`uname -s`
|
||||||
|
|
||||||
|
export X11_PREFIX="${X11_PREFIX:-$HOME/x11}"
|
||||||
|
export X11_BUILD_DIR="${X11_BUILD_DIR:-$HOME/build-deps}"
|
||||||
|
export DRV_BUILD_DIR="${DRV_BUILD_DIR:-$HOME/build-drivers}"
|
||||||
|
|
||||||
|
case "$X11_OS" in
|
||||||
|
Darwin) export FDO_CI_CONCURRENT=`sysctl -n hw.logicalcpu` ;;
|
||||||
|
Linux) export FDO_CI_CONCURRENT=`nproc` ;;
|
||||||
|
esac
|
||||||
|
|
||||||
export PATH="$X11_PREFIX/bin:$PATH"
|
export PATH="$X11_PREFIX/bin:$PATH"
|
||||||
export PKG_CONFIG_PATH="$X11_PREFIX/lib/x86_64-linux-gnu/pkgconfig:$X11_PREFIX/lib/pkgconfig:$X11_PREFIX/share/pkgconfig:$PKG_CONFIG_PATH"
|
export PKG_CONFIG_PATH="$X11_PREFIX/lib/x86_64-linux-gnu/pkgconfig:$X11_PREFIX/lib/pkgconfig:$X11_PREFIX/share/pkgconfig:$PKG_CONFIG_PATH"
|
||||||
export FDO_CI_CONCURRENT=`nproc`
|
|
||||||
export X11_BUILD_DIR=/home/runner/build-deps
|
|
||||||
export DRV_BUILD_DIR=/home/runner/build-drivers
|
|
||||||
|
|
|
@ -8,10 +8,13 @@ mkdir -p $X11_BUILD_DIR
|
||||||
cd $X11_BUILD_DIR
|
cd $X11_BUILD_DIR
|
||||||
|
|
||||||
build_meson rendercheck https://gitlab.freedesktop.org/xorg/test/rendercheck rendercheck-1.6
|
build_meson rendercheck https://gitlab.freedesktop.org/xorg/test/rendercheck rendercheck-1.6
|
||||||
|
if [ "$X11_OS" = "Linux" ]; then
|
||||||
build_meson drm https://gitlab.freedesktop.org/mesa/drm libdrm-2.4.121 \
|
build_meson drm https://gitlab.freedesktop.org/mesa/drm libdrm-2.4.121 \
|
||||||
-Domap=enabled
|
-Domap=enabled
|
||||||
|
fi
|
||||||
build_meson libxcvt https://gitlab.freedesktop.org/xorg/lib/libxcvt libxcvt-0.1.0
|
build_meson libxcvt https://gitlab.freedesktop.org/xorg/lib/libxcvt libxcvt-0.1.0
|
||||||
build_ac xorgproto https://gitlab.freedesktop.org/xorg/proto/xorgproto xorgproto-2024.1
|
build_ac xorgproto https://gitlab.freedesktop.org/xorg/proto/xorgproto xorgproto-2024.1
|
||||||
|
if [ "$X11_OS" = "Linux" ]; then
|
||||||
build_meson wayland https://gitlab.freedesktop.org/wayland/wayland 1.21.0 \
|
build_meson wayland https://gitlab.freedesktop.org/wayland/wayland 1.21.0 \
|
||||||
-Dtests=false -Ddocumentation=false -Ddtd_validation=false
|
-Dtests=false -Ddocumentation=false -Ddtd_validation=false
|
||||||
build_meson wayland-protocols https://gitlab.freedesktop.org/wayland/wayland-protocols 1.38
|
build_meson wayland-protocols https://gitlab.freedesktop.org/wayland/wayland-protocols 1.38
|
||||||
|
@ -19,6 +22,10 @@ build_meson libdecor https://gitlab.freedesktop.org/libdecor/libdecor
|
||||||
-D{demo,install_demo}=false
|
-D{demo,install_demo}=false
|
||||||
build_meson libei https://gitlab.freedesktop.org/libinput/libei 1.0.0 \
|
build_meson libei https://gitlab.freedesktop.org/libinput/libei 1.0.0 \
|
||||||
-Dtests=disabled -Ddocumentation=[] -Dliboeffis=enabled
|
-Dtests=disabled -Ddocumentation=[] -Dliboeffis=enabled
|
||||||
|
fi
|
||||||
|
if [ "$X11_OS" = "Darwin" ]; then
|
||||||
|
build_ac xset https://gitlab.freedesktop.org/xorg/app/xset xset-1.2.5
|
||||||
|
fi
|
||||||
build_ac_xts xts https://gitlab.freedesktop.org/xorg/test/xts master # dbbfa96c036e596346147081cbceda136e7c86c1
|
build_ac_xts xts https://gitlab.freedesktop.org/xorg/test/xts master # dbbfa96c036e596346147081cbceda136e7c86c1
|
||||||
|
|
||||||
clone_source piglit https://gitlab.freedesktop.org/mesa/piglit main # 265896c86f90cb72e8f218ba6a3617fca8b9a1e3
|
clone_source piglit https://gitlab.freedesktop.org/mesa/piglit main # 265896c86f90cb72e8f218ba6a3617fca8b9a1e3
|
||||||
|
|
|
@ -0,0 +1,38 @@
|
||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
set -e
|
||||||
|
|
||||||
|
brew update
|
||||||
|
|
||||||
|
brew install \
|
||||||
|
autoconf \
|
||||||
|
automake \
|
||||||
|
bdftopcf \
|
||||||
|
libapplewm \
|
||||||
|
libtool \
|
||||||
|
libx11 \
|
||||||
|
libxau \
|
||||||
|
libxaw \
|
||||||
|
libxcb \
|
||||||
|
libxdmcp \
|
||||||
|
libxext \
|
||||||
|
libxfixes \
|
||||||
|
libxfont2 \
|
||||||
|
libxkbfile \
|
||||||
|
libxi \
|
||||||
|
libxmu \
|
||||||
|
libxrender \
|
||||||
|
libxt \
|
||||||
|
libxtst \
|
||||||
|
meson \
|
||||||
|
mkfontscale \
|
||||||
|
pkgconf \
|
||||||
|
pixman \
|
||||||
|
util-macros \
|
||||||
|
xdpyinfo \
|
||||||
|
xkbcomp \
|
||||||
|
xkeyboard-config \
|
||||||
|
xtrans
|
||||||
|
|
||||||
|
pip3 install --break-system-packages \
|
||||||
|
mako
|
|
@ -82,8 +82,28 @@ build_ac_xts() {
|
||||||
clone_source "$pkgname" "$url" "$ref"
|
clone_source "$pkgname" "$url" "$ref"
|
||||||
(
|
(
|
||||||
cd $pkgname
|
cd $pkgname
|
||||||
CFLAGS=-fcommon ./autogen.sh --prefix=$X11_PREFIX
|
CFLAGS='-fcommon'
|
||||||
xvfb-run make -j${FDO_CI_CONCURRENT:-4} install
|
if [ "$X11_OS" = "Darwin" ]; then
|
||||||
|
# xts5/include/XtTest.h includes <X11/Intrinsic.h> => needs xt
|
||||||
|
# xts5/src/libXtaw/*.c include <X11/Xaw/*.h> and <X11/Xmu/*.h> => need xmu and xaw7
|
||||||
|
sed -E -i~ 's|(\[XTS\], \[)|\1xt xmu xaw7 |' configure.ac
|
||||||
|
# xts5/Xlib14/X{mb,wc}TextListToTextProperty.m define a function accepting `XTextProperty` but call it passing
|
||||||
|
#`XTextProperty*`; since the parameter is seemingly meant for output, accept it as pointer
|
||||||
|
sed -E -i~ -e 's|(XTextProperty)[[:space:]]+(text_prop_good)|\1 *\2|' -e 's|(style_good),[[:space:]]*&(text_prop_good)|\1,\2|' -e 's|text_prop_good\.|text_prop_good->|' xts5/Xlib14/X{mb,wc}TextListToTextProperty.m
|
||||||
|
# xts5/Xlib*/*.m forward-declare `strcpy()` which is incompatible with _FORTIFY_SOURCE > 0 where `strcpy` is
|
||||||
|
# a macro; set _FORTIFY_SOURCE to 0 as we don't care much about security in this test code
|
||||||
|
CFLAGS="$CFLAGS -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=0"
|
||||||
|
# declarations for `XtAppSetError{,Msg}Handler()` in <X11/Intrinsic.h> (libXt) make it hard to write warning-
|
||||||
|
# free code: they want a noreturn-annotated handler as input but return old handler without noreturn annotation,
|
||||||
|
# so e.g. `XtAppSetErrorHandler(XtAppSetErrorHandler(NULL))` (similar to xts5/Xt13/XtAppSetError*Handler.m)
|
||||||
|
# doesn't compile complaining about incompatible function pointers, at least with Apple Clang 16 (not sure why
|
||||||
|
# it treats this warning as error by default though)
|
||||||
|
if cc -Werror=unknown-warning-option -Wincompatible-function-pointer-types -c -xc -o /dev/null /dev/null 2>/dev/null; then
|
||||||
|
CFLAGS="$CFLAGS -Wno-error=incompatible-function-pointer-types"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
./autogen.sh --prefix=$X11_PREFIX CFLAGS="$CFLAGS"
|
||||||
|
make -j${FDO_CI_CONCURRENT:-4} install
|
||||||
)
|
)
|
||||||
touch $X11_PREFIX/$pkgname.DONE
|
touch $X11_PREFIX/$pkgname.DONE
|
||||||
fi
|
fi
|
||||||
|
|
|
@ -1,5 +1,8 @@
|
||||||
name: Build X servers
|
name: Build X servers
|
||||||
|
|
||||||
|
permissions:
|
||||||
|
contents: read
|
||||||
|
|
||||||
env:
|
env:
|
||||||
MESON_BUILDDIR: "build"
|
MESON_BUILDDIR: "build"
|
||||||
X11_PREFIX: /home/runner/x11
|
X11_PREFIX: /home/runner/x11
|
||||||
|
@ -20,7 +23,8 @@ jobs:
|
||||||
|
|
||||||
- name: prepare build environment
|
- name: prepare build environment
|
||||||
run: |
|
run: |
|
||||||
export MACHINE=`gcc -dumpmachine`
|
MACHINE=`gcc -dumpmachine`
|
||||||
|
echo "MACHINE=$MACHINE" >> "$GITHUB_ENV"
|
||||||
echo "PKG_CONFIG_PATH=$X11_PREFIX/share/pkgconfig:$X11_PREFIX/lib/$MACHINE/pkgconfig:$X11_PREFIX/lib/pkgconfig:$PKG_CONFIG_PATH" >> "$GITHUB_ENV"
|
echo "PKG_CONFIG_PATH=$X11_PREFIX/share/pkgconfig:$X11_PREFIX/lib/$MACHINE/pkgconfig:$X11_PREFIX/lib/pkgconfig:$PKG_CONFIG_PATH" >> "$GITHUB_ENV"
|
||||||
sudo chown root /bin/tar && sudo chmod u+s /bin/tar
|
sudo chown root /bin/tar && sudo chmod u+s /bin/tar
|
||||||
|
|
||||||
|
@ -41,11 +45,11 @@ jobs:
|
||||||
${{ env.X11_PREFIX }}
|
${{ env.X11_PREFIX }}
|
||||||
${{ env.X11_BUILD_DIR }}/xts
|
${{ env.X11_BUILD_DIR }}/xts
|
||||||
${{ env.X11_BUILD_DIR }}/piglit
|
${{ env.X11_BUILD_DIR }}/piglit
|
||||||
key: ${{ runner.os }}-x11-deps-${{ hashFiles('.github/scripts/install-prereq.sh') }}
|
key: ${{ runner.name }}-x11-deps-${{ hashFiles('.github/scripts/install-prereq.sh') }}
|
||||||
restore-keys: ${{ runner.os }}-x11-deps-
|
restore-keys: ${{ runner.name }}-x11-deps-
|
||||||
|
|
||||||
- name: generic prereq
|
- name: generic prereq
|
||||||
run: sudo .github/scripts/install-prereq.sh
|
run: .github/scripts/install-prereq.sh
|
||||||
|
|
||||||
- name: build
|
- name: build
|
||||||
run: .gitlab-ci/meson-build.sh
|
run: .gitlab-ci/meson-build.sh
|
||||||
|
@ -78,7 +82,8 @@ jobs:
|
||||||
|
|
||||||
- name: prepare build environment
|
- name: prepare build environment
|
||||||
run: |
|
run: |
|
||||||
export MACHINE=`gcc -dumpmachine`
|
MACHINE=`gcc -dumpmachine`
|
||||||
|
echo "MACHINE=$MACHINE" >> "$GITHUB_ENV"
|
||||||
echo "PKG_CONFIG_PATH=$X11_PREFIX/share/pkgconfig:$X11_PREFIX/lib/$MACHINE/pkgconfig:$X11_PREFIX/lib/pkgconfig:$PKG_CONFIG_PATH" >> "$GITHUB_ENV"
|
echo "PKG_CONFIG_PATH=$X11_PREFIX/share/pkgconfig:$X11_PREFIX/lib/$MACHINE/pkgconfig:$X11_PREFIX/lib/pkgconfig:$PKG_CONFIG_PATH" >> "$GITHUB_ENV"
|
||||||
sudo chown root /bin/tar && sudo chmod u+s /bin/tar
|
sudo chown root /bin/tar && sudo chmod u+s /bin/tar
|
||||||
|
|
||||||
|
@ -99,11 +104,11 @@ jobs:
|
||||||
${{ env.X11_PREFIX }}
|
${{ env.X11_PREFIX }}
|
||||||
${{ env.X11_BUILD_DIR }}/xts
|
${{ env.X11_BUILD_DIR }}/xts
|
||||||
${{ env.X11_BUILD_DIR }}/piglit
|
${{ env.X11_BUILD_DIR }}/piglit
|
||||||
key: ${{ runner.os }}-x11-deps-${{ hashFiles('.github/scripts/install-prereq.sh') }}
|
key: ${{ runner.name }}-x11-deps-${{ hashFiles('.github/scripts/install-prereq.sh') }}
|
||||||
restore-keys: ${{ runner.os }}-x11-deps-
|
restore-keys: ${{ runner.name }}-x11-deps-
|
||||||
|
|
||||||
- name: generic prereq
|
- name: generic prereq
|
||||||
run: sudo .github/scripts/install-prereq.sh
|
run: .github/scripts/install-prereq.sh
|
||||||
|
|
||||||
- name: build xserver sdk
|
- name: build xserver sdk
|
||||||
run: |
|
run: |
|
||||||
|
@ -117,3 +122,61 @@ jobs:
|
||||||
|
|
||||||
- name: compile drivers
|
- name: compile drivers
|
||||||
run: .github/scripts/compile-drivers.sh
|
run: .github/scripts/compile-drivers.sh
|
||||||
|
|
||||||
|
xserver-build-macos:
|
||||||
|
env:
|
||||||
|
MESON_ARGS: -Dprefix=/tmp -Dglx=false -Dxnest=false
|
||||||
|
X11_PREFIX: /Users/runner/x11
|
||||||
|
X11_BUILD_DIR: /Users/runner/build-deps
|
||||||
|
runs-on: macos-latest
|
||||||
|
steps:
|
||||||
|
- name: Check out repository code
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
|
||||||
|
- name: prepare build environment
|
||||||
|
run: |
|
||||||
|
echo "PKG_CONFIG_PATH=$X11_PREFIX/share/pkgconfig:$X11_PREFIX/lib/pkgconfig:$PKG_CONFIG_PATH" >> "$GITHUB_ENV"
|
||||||
|
|
||||||
|
- name: homebrew cache
|
||||||
|
uses: actions/cache@v4
|
||||||
|
with:
|
||||||
|
path: /Users/runner/Library/Caches/Homebrew
|
||||||
|
key: ${{ runner.os }}-homebrew-cache-${{ hashFiles('.github/scripts/macos/install-pkg.sh') }}
|
||||||
|
restore-keys: ${{ runner.os }}-homebrew-cache-
|
||||||
|
|
||||||
|
- name: pkg install
|
||||||
|
run: .github/scripts/macos/install-pkg.sh
|
||||||
|
|
||||||
|
- name: X11 prereq cache
|
||||||
|
uses: actions/cache@v4
|
||||||
|
with:
|
||||||
|
path: |
|
||||||
|
${{ env.X11_PREFIX }}
|
||||||
|
${{ env.X11_BUILD_DIR }}/xts
|
||||||
|
${{ env.X11_BUILD_DIR }}/piglit
|
||||||
|
key: ${{ runner.os }}-x11-deps-${{ hashFiles('.github/scripts/install-prereq.sh') }}
|
||||||
|
restore-keys: ${{ runner.os }}-x11-deps-
|
||||||
|
|
||||||
|
- name: generic prereq
|
||||||
|
run: .github/scripts/install-prereq.sh
|
||||||
|
|
||||||
|
- name: build
|
||||||
|
run: .gitlab-ci/meson-build.sh
|
||||||
|
|
||||||
|
- name: tests (may fail)
|
||||||
|
continue-on-error: true
|
||||||
|
run: meson test -C "${{ env.MESON_BUILDDIR }}" --print-errorlogs -j1 || true
|
||||||
|
env:
|
||||||
|
XTEST_DIR: ${{ env.X11_BUILD_DIR }}/xts
|
||||||
|
PIGLIT_DIR: ${{ env.X11_BUILD_DIR }}/piglit
|
||||||
|
|
||||||
|
- name: archive build logs
|
||||||
|
uses: actions/upload-artifact@v4
|
||||||
|
with:
|
||||||
|
name: build-logs-macos
|
||||||
|
path: |
|
||||||
|
build/meson-logs/*
|
||||||
|
- name: ddx build check
|
||||||
|
run: .gitlab-ci/check-ddx-build.sh
|
||||||
|
- name: manpage check
|
||||||
|
run: .gitlab-ci/manpages-check
|
||||||
|
|
|
@ -19,6 +19,7 @@ fi
|
||||||
[[ "$BUILD_XEPHYR" == true ]] && check_executable "hw/kdrive/ephyr/Xephyr"
|
[[ "$BUILD_XEPHYR" == true ]] && check_executable "hw/kdrive/ephyr/Xephyr"
|
||||||
[[ "$BUILD_XNEST" == true ]] && check_executable "hw/xnest/Xnest"
|
[[ "$BUILD_XNEST" == true ]] && check_executable "hw/xnest/Xnest"
|
||||||
[[ "$BUILD_XORG" == true ]] && check_executable "hw/xfree86/Xorg"
|
[[ "$BUILD_XORG" == true ]] && check_executable "hw/xfree86/Xorg"
|
||||||
|
[[ "$BUILD_XQUARTZ" == true ]] && check_executable "hw/xquartz/mach-startup/Xquartz"
|
||||||
[[ "$BUILD_XVFB" == true ]] && check_executable "hw/vfb/Xvfb"
|
[[ "$BUILD_XVFB" == true ]] && check_executable "hw/vfb/Xvfb"
|
||||||
|
|
||||||
exit 0
|
exit 0
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
#!/bin/sh
|
#!/bin/sh
|
||||||
|
|
||||||
find build/ -regex ".*\.[1-9]$" -exec grep -E \
|
find build/ -type f -regex ".*\.[1-9]$" -exec grep -E \
|
||||||
@vendorversion@\|\
|
@vendorversion@\|\
|
||||||
@xorgversion@\|\
|
@xorgversion@\|\
|
||||||
@xservername@\|\
|
@xservername@\|\
|
||||||
|
|
|
@ -10,9 +10,9 @@
|
||||||
Keep in mind that history is also a piece of documentation.
|
Keep in mind that history is also a piece of documentation.
|
||||||
|
|
||||||
3. Once release is out, bugfixes should be submitted separately, against
|
3. Once release is out, bugfixes should be submitted separately, against
|
||||||
the affected release branch(es) as well as master (so multiple MRs)
|
the affected release branch(es) as well as master (so multiple pull requests)
|
||||||
|
|
||||||
4. If new functions or types are introduced, these should be documented
|
4. If new functions or types are introduced, these should be documented
|
||||||
in-code, so we can generate docs directly from the code :)
|
in-code, so we can generate docs directly from the code :)
|
||||||
|
|
||||||
5. Use MR tags if you can - if we need some more, just ask.
|
5. Use pull request tags if you can - if we need some more, just ask.
|
||||||
|
|
119
README.md
119
README.md
|
@ -38,11 +38,17 @@ Upgrade notice
|
||||||
When unsure, it's best to be prepared to ssh into your machine from another one
|
When unsure, it's best to be prepared to ssh into your machine from another one
|
||||||
or set a timer that's calling `chvt 1` after certain time, so you don't
|
or set a timer that's calling `chvt 1` after certain time, so you don't
|
||||||
need a cold reboot.
|
need a cold reboot.
|
||||||
|
Or, make sure that you have magic `SysRq` key enabled (`Alt+PrtSc`)
|
||||||
|
via sysctl (`kernel.sysrq=1`), then press following combination depending on keyboard
|
||||||
|
layout to make kernel regain control over keyboard to make VT switching work:
|
||||||
|
- QWERTY/AZERTY keyboard layout: `SysRq + R`
|
||||||
|
- Dvorak/Colemak keyboard layout: `SysRq + P`
|
||||||
|
|
||||||
* Proprietary Nvidia drivers might break: they still haven't managed to do
|
* Proprietary Nvidia drivers might break: they still haven't managed to do
|
||||||
even simple cleanups to catch up with Xorg master for about a year.
|
even simple cleanups to catch up with Xorg master for about a year.
|
||||||
All attempts to get into direct mail contact have failed. We're trying to
|
All attempts to get into direct mail contact have failed. We're trying to
|
||||||
work around this, but cannot give any guarantees.
|
work around this, but cannot give any guarantees. But you can make it work
|
||||||
|
by adding `Option "IgnoreABI" "1"` line to `ServerFlags` section in Xorg config.
|
||||||
|
|
||||||
* Most Xorg drivers should run as-is (once recompiled!), with some exceptions.
|
* Most Xorg drivers should run as-is (once recompiled!), with some exceptions.
|
||||||
See `.gitlab-ci.yml` for the versions/branches built along with Xlibre.
|
See `.gitlab-ci.yml` for the versions/branches built along with Xlibre.
|
||||||
|
@ -54,61 +60,62 @@ Driver repositories
|
||||||
Since Redhat had deleted and banned all X11Libre repositories from freedesktop.org,
|
Since Redhat had deleted and banned all X11Libre repositories from freedesktop.org,
|
||||||
the driver repositories are now moved to GitHub:
|
the driver repositories are now moved to GitHub:
|
||||||
|
|
||||||
| Driver | Git repository |
|
| Driver | Git repository | Release tag |
|
||||||
| --- | --- |
|
| --- | --- | --- |
|
||||||
| xf86-input-elographics: | https://github.com/X11Libre/xf86-input-elographics |
|
| xf86-input-elographics: | https://github.com/X11Libre/xf86-input-elographics | xlibre-xf86-input-elographics-1.4.4.1 |
|
||||||
| xf86-input-evdev: | https://github.com/X11Libre/xf86-input-evdev |
|
| xf86-input-evdev: | https://github.com/X11Libre/xf86-input-evdev | xlibre-xf86-input-evdev-2.11.0.1 |
|
||||||
| xf86-input-void: | https://github.com/X11Libre/xf86-input-void |
|
| xf86-input-void: | https://github.com/X11Libre/xf86-input-void | xlibre-xf86-input-void-1.4.2.1 |
|
||||||
| xf86-input-joystick: | https://github.com/X11Libre/xf86-input-joystick |
|
| xf86-input-joystick: | https://github.com/X11Libre/xf86-input-joystick | xlibre-xf86-input-joystick-1.6.4.1 |
|
||||||
| xf86-input-keyboard: | https://github.com/X11Libre/xf86-input-keyboard |
|
| xf86-input-keyboard: | https://github.com/X11Libre/xf86-input-keyboard | xlibre-xf86-input-keyboard-2.1.0.1 |
|
||||||
| xf86-input-libinput: | https://github.com/X11Libre/xf86-input-libinput |
|
| xf86-input-libinput: | https://github.com/X11Libre/xf86-input-libinput | xlibre-xf86-input-libinput-1.5.0.1 |
|
||||||
| xf86-input-mouse: | https://github.com/X11Libre/xf86-input-mouse |
|
| xf86-input-mouse: | https://github.com/X11Libre/xf86-input-mouse | xlibre-xf86-input-mouse-1.9.5.1 |
|
||||||
| xf86-input-synaptics: | https://github.com/X11Libre/xf86-input-synaptics |
|
| xf86-input-synaptics: | https://github.com/X11Libre/xf86-input-synaptics | xlibre-xf86-input-synaptics-1.10.0.1 |
|
||||||
| xf86-input-vmmouse: | https://github.com/X11Libre/xf86-input-vmmouse |
|
| xf86-input-vmmouse: | https://github.com/X11Libre/xf86-input-vmmouse | xlibre-xf86-input-vmmouse-13.2.0.1 |
|
||||||
| xf86-video-amdgpu: | https://github.com/X11Libre/xf86-video-amdgpu |
|
| xf86-input-wacom: | https://github.com/X11Libre/xf86-input-wacom | xlibre-xf86-input-wacom-1.2.3.1 |
|
||||||
| xf86-video-apm: | https://github.com/X11Libre/xf86-video-apm |
|
| xf86-video-amdgpu: | https://github.com/X11Libre/xf86-video-amdgpu | xlibre-xf86-video-amdgpu-23.0.0.1 |
|
||||||
| xf86-video-ark: | https://github.com/X11Libre/xf86-video-ark |
|
| xf86-video-apm: | https://github.com/X11Libre/xf86-video-apm | xlibre-xf86-video-apm-1.3.0.1 |
|
||||||
| xf86-video-ast: | https://github.com/X11Libre/xf86-video-ast |
|
| xf86-video-ark: | https://github.com/X11Libre/xf86-video-ark | xfree-xf86-video-ark-0.7.6.1 |
|
||||||
| xf86-video-ati: | https://github.com/X11Libre/xf86-video-ati |
|
| xf86-video-ast: | https://github.com/X11Libre/xf86-video-ast | xlibre-xf86-video-ast-1.2.0 |
|
||||||
| xf86-video-chips: | https://github.com/X11Libre/xf86-video-chips |
|
| xf86-video-ati: | https://github.com/X11Libre/xf86-video-ati | xfree-xf86-video-ati-22.0.0.1 |
|
||||||
| xf86-video-cirrus: | https://github.com/X11Libre/xf86-video-cirrus |
|
| xf86-video-chips: | https://github.com/X11Libre/xf86-video-chips | xlibre-xf86-video-chips-1.5.0.1 |
|
||||||
| xf86-video-dummy: | https://github.com/X11Libre/xf86-video-dummy |
|
| xf86-video-cirrus: | https://github.com/X11Libre/xf86-video-cirrus | xlibre-xf86-video-cirrus-1.6.0.1 |
|
||||||
| xf86-video-fbdev: | https://github.com/X11Libre/xf86-video-fbdev |
|
| xf86-video-dummy: | https://github.com/X11Libre/xf86-video-dummy | xlibre-xf86-video-dummy-0.4.1.1 |
|
||||||
| xf86-video-freedreno: | https://github.com/X11Libre/xf86-video-freedreno |
|
| xf86-video-fbdev: | https://github.com/X11Libre/xf86-video-fbdev | xlibre-xf86-video-fbdev-0.5.1.1 |
|
||||||
| xf86-video-geode: | https://github.com/X11Libre/xf86-video-geode |
|
| xf86-video-freedreno: | https://github.com/X11Libre/xf86-video-freedreno | xlibre-xf86-video-freedreno-1.4.0.1 |
|
||||||
| xf86-video-i128: | https://github.com/X11Libre/xf86-video-i128 |
|
| xf86-video-geode: | https://github.com/X11Libre/xf86-video-geode | xlibre-xf86-video-geode-2.18.1.1 |
|
||||||
| xf86-video-i740: | https://github.com/X11Libre/xf86-video-i740 |
|
| xf86-video-i128: | https://github.com/X11Libre/xf86-video-i128 | xlibre-xf86-video-i128-1.4.1.1 |
|
||||||
| xf86-video-intel: | https://github.com/X11Libre/xf86-video-intel |
|
| xf86-video-i740: | https://github.com/X11Libre/xf86-video-i740 | xlibre-xf86-video-i740-1.4.0.1 |
|
||||||
| xf86-video-mach64: | https://github.com/X11Libre/xf86-video-mach64 |
|
| xf86-video-intel: | https://github.com/X11Libre/xf86-video-intel | xlibre-xf86-video-intel-3.0.0.1 |
|
||||||
| xf86-video-mga: | https://github.com/X11Libre/xf86-video-mga |
|
| xf86-video-mach64: | https://github.com/X11Libre/xf86-video-mach64 | xlibre-xf86-video-mach64-6.10.0.1 |
|
||||||
| xf86-video-neomagic: | https://github.com/X11Libre/xf86-video-neomagic |
|
| xf86-video-mga: | https://github.com/X11Libre/xf86-video-mga | xlibre-xf86-video-mga-2.1.0.1 |
|
||||||
| xf86-video-nested: | https://github.com/X11Libre/xf86-video-nested |
|
| xf86-video-neomagic: | https://github.com/X11Libre/xf86-video-neomagic | xlibre-xf86-video-neomagic-1.3.1.1 |
|
||||||
| xf86-video-nouveau: | https://github.com/X11Libre/xf86-video-nouveau |
|
| xf86-video-nested: | https://github.com/X11Libre/xf86-video-nested | xlibre-xf86-video-nested-1.0.0.1 |
|
||||||
| xf86-video-nv: | https://github.com/X11Libre/xf86-video-nv |
|
| xf86-video-nouveau: | https://github.com/X11Libre/xf86-video-nouveau | xlibre-xf86-video-nouveau-1.0.18.1 |
|
||||||
| xf86-video-omap: | https://github.com/X11Libre/xf86-video-omap |
|
| xf86-video-nv: | https://github.com/X11Libre/xf86-video-nv | xlibre-xf86-video-nv-2.1.23.1 |
|
||||||
| xf86-video-qxl: | https://github.com/X11Libre/xf86-video-qxl |
|
| xf86-video-omap: | https://github.com/X11Libre/xf86-video-omap | xlibre-xf86-video-omap-0.4.5.1 |
|
||||||
| xf86-video-r128: | https://github.com/X11Libre/xf86-video-r128 |
|
| xf86-video-qxl: | https://github.com/X11Libre/xf86-video-qxl | xlibre-xf86-video-qxl-0.1.6.1 |
|
||||||
| xf86-video-rendition: | https://github.com/X11Libre/xf86-video-rendition |
|
| xf86-video-r128: | https://github.com/X11Libre/xf86-video-r128 | xlibre-xf86-video-r128-6.13.0.1 |
|
||||||
| xf86-video-s3virge: | https://github.com/X11Libre/xf86-video-s3virge |
|
| xf86-video-rendition: | https://github.com/X11Libre/xf86-video-rendition | xlibre-xf86-video-rendition-4.2.7.1 |
|
||||||
| xf86-video-savage: | https://github.com/X11Libre/xf86-video-savage |
|
| xf86-video-s3virge: | https://github.com/X11Libre/xf86-video-s3virge | xlibre-xf86-video-s3virge-1.11.1.1 |
|
||||||
| xf86-video-siliconmotion: | https://github.com/X11Libre/xf86-video-siliconmotion |
|
| xf86-video-savage: | https://github.com/X11Libre/xf86-video-savage | xlibre-xf86-video-savage-2.4.1.1 |
|
||||||
| xf86-video-sis: | https://github.com/X11Libre/xf86-video-sis |
|
| xf86-video-siliconmotion: | https://github.com/X11Libre/xf86-video-siliconmotion | xlibre-xf86-video-siliconmotion-1.7.10.1 |
|
||||||
| xf86-video-sisusb: | https://github.com/X11Libre/xf86-video-sisusb |
|
| xf86-video-sis: | https://github.com/X11Libre/xf86-video-sis | xlibre-xf86-video-sis-0.12.0.1 |
|
||||||
| xf86-video-suncg14: | https://github.com/X11Libre/xf86-video-suncg14 |
|
| xf86-video-sisusb: | https://github.com/X11Libre/xf86-video-sisusb | xlibre-xf86-video-sisusb-0.9.7.1 |
|
||||||
| xf86-video-suncg3: | https://github.com/X11Libre/xf86-video-suncg3 |
|
| xf86-video-suncg14: | https://github.com/X11Libre/xf86-video-suncg14 | xlibre-xf86-video-suncg14-1.2.0 |
|
||||||
| xf86-video-suncg6: | https://github.com/X11Libre/xf86-video-suncg6 |
|
| xf86-video-suncg3: | https://github.com/X11Libre/xf86-video-suncg3 | xlibre-xf86-video-suncg3-1.1.3.0 |
|
||||||
| xf86-video-sunffb: | https://github.com/X11Libre/xf86-video-sunffb |
|
| xf86-video-suncg6: | https://github.com/X11Libre/xf86-video-suncg6 | xlibre-xf86-video-suncg6-1.1.3.1 |
|
||||||
| xf86-video-sunleo: | https://github.com/X11Libre/xf86-video-sunleo |
|
| xf86-video-sunffb: | https://github.com/X11Libre/xf86-video-sunffb | xlibre-xf86-video-sunffb-1.2.3.1 |
|
||||||
| xf86-video-suntcx: | https://github.com/X11Libre/xf86-video-suntcx |
|
| xf86-video-sunleo: | https://github.com/X11Libre/xf86-video-sunleo | xlibre-xf86-video-sunleo-1.2.3.1 |
|
||||||
| xf86-video-tdfx: | https://github.com/X11Libre/xf86-video-tdfx |
|
| xf86-video-suntcx: | https://github.com/X11Libre/xf86-video-suntcx | xlibre-xf86-video-suntcx-1.1.3.1 |
|
||||||
| xf86-video-trident: | https://github.com/X11Libre/xf86-video-trident |
|
| xf86-video-tdfx: | https://github.com/X11Libre/xf86-video-tdfx | xlibre-xf86-video-tdfx-1.5.0.1 |
|
||||||
| xf86-video-vbox: | https://github.com/X11Libre/xf86-video-vbox |
|
| xf86-video-trident: | https://github.com/X11Libre/xf86-video-trident | xlibre-xf86-video-trident-1.4.0.1 |
|
||||||
| xf86-video-v4l: | https://github.com/X11Libre/xf86-video-v4l |
|
| xf86-video-vbox: | https://github.com/X11Libre/xf86-video-vbox | xlibre-xf86-video-vbox-1.0.1.1 |
|
||||||
| xf86-video-vesa: | https://github.com/X11Libre/xf86-video-vesa |
|
| xf86-video-v4l: | https://github.com/X11Libre/xf86-video-v4l | xlibre-xf86-video-v4l-0.3.0.1 |
|
||||||
| xf86-video-vmware: | https://github.com/X11Libre/xf86-video-vmware |
|
| xf86-video-vesa: | https://github.com/X11Libre/xf86-video-vesa | xlibre-xf86-video-vesa-2.6.0.1 |
|
||||||
| xf86-video-voodoo: | https://github.com/X11Libre/xf86-video-voodoo |
|
| xf86-video-vmware: | https://github.com/X11Libre/xf86-video-vmware | xlibre-xf86-video-vmware-13.4.0.1 |
|
||||||
| xf86-video-wsfb: | https://github.com/X11Libre/xf86-video-wsfb |
|
| xf86-video-voodoo: | https://github.com/X11Libre/xf86-video-voodoo | xlibre-xf86-video-voodoo-1.2.6.1 |
|
||||||
| xf86-video-xgi: | https://github.com/X11Libre/xf86-video-xgi |
|
| xf86-video-wsfb: | https://github.com/X11Libre/xf86-video-wsfb | xlibre-xf86-video-wsfb-0.4.1.1 |
|
||||||
|
| xf86-video-xgi: | https://github.com/X11Libre/xf86-video-xgi | xlibre-xf86-video-xgi-1.6.1.1 |
|
||||||
|
|
||||||
|
|
||||||
Contact
|
Contact
|
||||||
|
|
|
@ -2,7 +2,9 @@
|
||||||
*
|
*
|
||||||
* Copyright © 2024 Enrico Weigelt, metux IT consult <info@metux.net>
|
* Copyright © 2024 Enrico Weigelt, metux IT consult <info@metux.net>
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef _XORG_GEEXT_PRIV_H
|
#ifndef _XORG_GEEXT_PRIV_H
|
||||||
|
#define _XORG_GEEXT_PRIV_H
|
||||||
|
|
||||||
#include <X11/Xproto.h>
|
#include <X11/Xproto.h>
|
||||||
|
|
||||||
|
|
|
@ -58,13 +58,13 @@ if build_xv
|
||||||
hdrs_xext += ['xvdix.h', 'xvmcext.h']
|
hdrs_xext += ['xvdix.h', 'xvmcext.h']
|
||||||
endif
|
endif
|
||||||
|
|
||||||
libxserver_xext = static_library('libxserver_xext',
|
libxserver_xext = static_library('xserver_xext',
|
||||||
srcs_xext,
|
srcs_xext,
|
||||||
include_directories: inc,
|
include_directories: inc,
|
||||||
dependencies: common_dep,
|
dependencies: common_dep,
|
||||||
)
|
)
|
||||||
|
|
||||||
libxserver_xext_vidmode = static_library('libxserver_xext_vidmode',
|
libxserver_xext_vidmode = static_library('xserver_xext_vidmode',
|
||||||
'vidmode.c',
|
'vidmode.c',
|
||||||
include_directories: inc,
|
include_directories: inc,
|
||||||
dependencies: common_dep,
|
dependencies: common_dep,
|
||||||
|
|
|
@ -11,14 +11,6 @@
|
||||||
#include "namespace.h"
|
#include "namespace.h"
|
||||||
#include "hooks.h"
|
#include "hooks.h"
|
||||||
|
|
||||||
static inline Bool winIsRoot(WindowPtr pWin) {
|
|
||||||
if (!pWin)
|
|
||||||
return FALSE;
|
|
||||||
if (pWin->drawable.pScreen->root == pWin)
|
|
||||||
return TRUE;
|
|
||||||
return FALSE;
|
|
||||||
}
|
|
||||||
|
|
||||||
void hookWindowProperty(CallbackListPtr *pcbl, void *unused, void *calldata)
|
void hookWindowProperty(CallbackListPtr *pcbl, void *unused, void *calldata)
|
||||||
{
|
{
|
||||||
XNS_HOOK_HEAD(PropertyFilterParam);
|
XNS_HOOK_HEAD(PropertyFilterParam);
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
libxserver_namespace = static_library(
|
libxserver_namespace = static_library(
|
||||||
'libxserver_namespace',
|
'xserver_namespace',
|
||||||
[
|
[
|
||||||
'config.c',
|
'config.c',
|
||||||
'hook-client.c',
|
'hook-client.c',
|
||||||
|
|
|
@ -1,8 +1,10 @@
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Server dispatcher function replacements
|
* Server dispatcher function replacements
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
#ifndef XSERVER_PANORAMIXH_H
|
||||||
|
#define XSERVER_PANORAMIXH_H
|
||||||
|
|
||||||
extern int PanoramiXCreateWindow(ClientPtr client);
|
extern int PanoramiXCreateWindow(ClientPtr client);
|
||||||
extern int PanoramiXChangeWindowAttributes(ClientPtr client);
|
extern int PanoramiXChangeWindowAttributes(ClientPtr client);
|
||||||
extern int PanoramiXDestroyWindow(ClientPtr client);
|
extern int PanoramiXDestroyWindow(ClientPtr client);
|
||||||
|
@ -71,3 +73,5 @@ extern int connBlockScreenStart;
|
||||||
extern xConnSetupPrefix connSetupPrefix;
|
extern xConnSetupPrefix connSetupPrefix;
|
||||||
|
|
||||||
extern int (*SavedProcVector[256]) (ClientPtr client);
|
extern int (*SavedProcVector[256]) (ClientPtr client);
|
||||||
|
|
||||||
|
#endif /* XSERVER_PANORAMIXH_H */
|
||||||
|
|
|
@ -1280,7 +1280,7 @@ ProcVidModeGetMonitor(ClientPtr client)
|
||||||
+ nHsync + nVrefresh + nVendorItems + nModelItems
|
+ nHsync + nVrefresh + nVendorItems + nModelItems
|
||||||
};
|
};
|
||||||
|
|
||||||
const int buflen = nHsync * nVrefresh + nVendorItems + nModelItems;
|
const int buflen = nHsync + nVrefresh + nVendorItems + nModelItems;
|
||||||
|
|
||||||
CARD32 *sendbuf = calloc(buflen, sizeof(CARD32));
|
CARD32 *sendbuf = calloc(buflen, sizeof(CARD32));
|
||||||
if (!sendbuf)
|
if (!sendbuf)
|
||||||
|
@ -1302,22 +1302,22 @@ ProcVidModeGetMonitor(ClientPtr client)
|
||||||
bufwalk++;
|
bufwalk++;
|
||||||
}
|
}
|
||||||
|
|
||||||
memcpy(sendbuf,
|
memcpy(bufwalk,
|
||||||
pVidMode->GetMonitorValue(pScreen, VIDMODE_MON_VENDOR, 0).ptr,
|
pVidMode->GetMonitorValue(pScreen, VIDMODE_MON_VENDOR, 0).ptr,
|
||||||
vendorLength);
|
vendorLength);
|
||||||
sendbuf += nVendorItems;
|
bufwalk += nVendorItems;
|
||||||
|
|
||||||
memcpy(sendbuf,
|
memcpy(bufwalk,
|
||||||
pVidMode->GetMonitorValue(pScreen, VIDMODE_MON_MODEL, 0).ptr,
|
pVidMode->GetMonitorValue(pScreen, VIDMODE_MON_MODEL, 0).ptr,
|
||||||
modelLength);
|
modelLength);
|
||||||
sendbuf += nModelItems;
|
bufwalk += nModelItems;
|
||||||
|
|
||||||
if (client->swapped) {
|
if (client->swapped) {
|
||||||
swaps(&rep.sequenceNumber);
|
swaps(&rep.sequenceNumber);
|
||||||
swapl(&rep.length);
|
swapl(&rep.length);
|
||||||
}
|
}
|
||||||
|
|
||||||
WriteToClient(client, SIZEOF(xXF86VidModeGetMonitorReply), &rep);
|
WriteToClient(client, sizeof(xXF86VidModeGetMonitorReply), &rep);
|
||||||
WriteToClient(client, buflen * sizeof(CARD32), sendbuf);
|
WriteToClient(client, buflen * sizeof(CARD32), sendbuf);
|
||||||
|
|
||||||
free(sendbuf);
|
free(sendbuf);
|
||||||
|
|
|
@ -78,7 +78,7 @@ int XaceHookPropertyAccess(ClientPtr ptr, WindowPtr pWin, PropertyPtr *ppProp,
|
||||||
Mask access_mode);
|
Mask access_mode);
|
||||||
int XaceHookSelectionAccess(ClientPtr ptr, Selection ** ppSel, Mask access_mode);
|
int XaceHookSelectionAccess(ClientPtr ptr, Selection ** ppSel, Mask access_mode);
|
||||||
|
|
||||||
/* needs to be exported for in-tree modsetting, but not part of public API */
|
/* needs to be exported for in-tree modesetting, but not part of public API */
|
||||||
_X_EXPORT int XaceHookResourceAccess(ClientPtr client, XID id, RESTYPE rtype, void *res,
|
_X_EXPORT int XaceHookResourceAccess(ClientPtr client, XID id, RESTYPE rtype, void *res,
|
||||||
RESTYPE ptype, void *parent, Mask access_mode);
|
RESTYPE ptype, void *parent, Mask access_mode);
|
||||||
|
|
||||||
|
|
|
@ -647,7 +647,6 @@ ProcXF86BigfontDispatch(ClientPtr client)
|
||||||
static int _X_COLD
|
static int _X_COLD
|
||||||
SProcXF86BigfontQueryVersion(ClientPtr client)
|
SProcXF86BigfontQueryVersion(ClientPtr client)
|
||||||
{
|
{
|
||||||
REQUEST(xXF86BigfontQueryVersionReq);
|
|
||||||
return ProcXF86BigfontQueryVersion(client);
|
return ProcXF86BigfontQueryVersion(client);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -516,7 +516,7 @@ ConstructClientIds(ClientPtr client,
|
||||||
for (c = 0; c < currentMaxClients; ++c) {
|
for (c = 0; c < currentMaxClients; ++c) {
|
||||||
if (clients[c] &&
|
if (clients[c] &&
|
||||||
(XaceHookClientAccess(client, clients[c], DixReadAccess)
|
(XaceHookClientAccess(client, clients[c], DixReadAccess)
|
||||||
!= Success)) {
|
== Success)) {
|
||||||
if (!ConstructClientIdValue(client, clients[c],
|
if (!ConstructClientIdValue(client, clients[c],
|
||||||
specs[specIdx].mask, ctx)) {
|
specs[specIdx].mask, ctx)) {
|
||||||
return BadAlloc;
|
return BadAlloc;
|
||||||
|
@ -527,7 +527,7 @@ ConstructClientIds(ClientPtr client,
|
||||||
ClientPtr owner = dixClientForXID(specs[specIdx].client);
|
ClientPtr owner = dixClientForXID(specs[specIdx].client);
|
||||||
if (owner &&
|
if (owner &&
|
||||||
(XaceHookClientAccess(client, owner, DixReadAccess)
|
(XaceHookClientAccess(client, owner, DixReadAccess)
|
||||||
!= Success)) {
|
== Success)) {
|
||||||
if (!ConstructClientIdValue(client, owner,
|
if (!ConstructClientIdValue(client, owner,
|
||||||
specs[specIdx].mask, ctx)) {
|
specs[specIdx].mask, ctx)) {
|
||||||
return BadAlloc;
|
return BadAlloc;
|
||||||
|
|
|
@ -1,2 +1,7 @@
|
||||||
|
#ifndef XSERVER_XVDISP_H
|
||||||
|
#define XSERVER_XVDISP_H
|
||||||
|
|
||||||
extern void XineramifyXv(void);
|
extern void XineramifyXv(void);
|
||||||
extern int xvUseXinerama;
|
extern int xvUseXinerama;
|
||||||
|
|
||||||
|
#endif /* XSERVER_XVDISP_H */
|
||||||
|
|
|
@ -2,7 +2,9 @@
|
||||||
*
|
*
|
||||||
* Copyright © 2024 Enrico Weigelt, metux IT consult <info@metux.net>
|
* Copyright © 2024 Enrico Weigelt, metux IT consult <info@metux.net>
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef _XORG_XVDIX_PRIV_H
|
#ifndef _XORG_XVDIX_PRIV_H
|
||||||
|
#define _XORG_XVDIX_PRIV_H
|
||||||
|
|
||||||
#include <X11/Xdefs.h>
|
#include <X11/Xdefs.h>
|
||||||
|
|
||||||
|
|
|
@ -53,14 +53,14 @@ srcs_xi = [
|
||||||
'xiwarppointer.c',
|
'xiwarppointer.c',
|
||||||
]
|
]
|
||||||
|
|
||||||
libxserver_xi = static_library('libxserver_xi',
|
libxserver_xi = static_library('xserver_xi',
|
||||||
srcs_xi,
|
srcs_xi,
|
||||||
include_directories: inc,
|
include_directories: inc,
|
||||||
dependencies: common_dep,
|
dependencies: common_dep,
|
||||||
)
|
)
|
||||||
|
|
||||||
srcs_xi_stubs = ['stubs.c']
|
srcs_xi_stubs = ['stubs.c']
|
||||||
libxserver_xi_stubs = static_library('libxserver_xi_stubs',
|
libxserver_xi_stubs = static_library('xserver_xi_stubs',
|
||||||
srcs_xi_stubs,
|
srcs_xi_stubs,
|
||||||
include_directories: inc,
|
include_directories: inc,
|
||||||
dependencies: common_dep,
|
dependencies: common_dep,
|
||||||
|
|
|
@ -10,7 +10,7 @@ hdrs_composite = [
|
||||||
'compositeext.h',
|
'compositeext.h',
|
||||||
]
|
]
|
||||||
|
|
||||||
libxserver_composite = static_library('libxserver_composite',
|
libxserver_composite = static_library('xserver_composite',
|
||||||
srcs_composite,
|
srcs_composite,
|
||||||
include_directories: inc,
|
include_directories: inc,
|
||||||
dependencies: common_dep,
|
dependencies: common_dep,
|
||||||
|
|
|
@ -23,6 +23,9 @@
|
||||||
* Author: Daniel Stone <daniel@fooishbar.org>
|
* Author: Daniel Stone <daniel@fooishbar.org>
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
#ifndef XSERVER_CONFIG_BACKENDS_H
|
||||||
|
#define XSERVER_CONFIG_BACKENDS_H
|
||||||
|
|
||||||
#ifdef HAVE_DIX_CONFIG_H
|
#ifdef HAVE_DIX_CONFIG_H
|
||||||
#include <dix-config.h>
|
#include <dix-config.h>
|
||||||
#endif
|
#endif
|
||||||
|
@ -44,3 +47,5 @@ void config_hal_fini(void);
|
||||||
int config_wscons_init(void);
|
int config_wscons_init(void);
|
||||||
void config_wscons_fini(void);
|
void config_wscons_fini(void);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#endif /* XSERVER_CONFIG_BACKENDS_H */
|
||||||
|
|
|
@ -28,7 +28,7 @@ if build_xorg
|
||||||
install_dir: join_paths(get_option('datadir'), 'X11/xorg.conf.d'))
|
install_dir: join_paths(get_option('datadir'), 'X11/xorg.conf.d'))
|
||||||
endif
|
endif
|
||||||
|
|
||||||
libxserver_config = static_library('libxserver_config',
|
libxserver_config = static_library('xserver_config',
|
||||||
srcs_config,
|
srcs_config,
|
||||||
include_directories: inc,
|
include_directories: inc,
|
||||||
dependencies: config_dep,
|
dependencies: config_dep,
|
||||||
|
|
|
@ -2,7 +2,7 @@ srcs_damageext = [
|
||||||
'damageext.c',
|
'damageext.c',
|
||||||
]
|
]
|
||||||
|
|
||||||
libxserver_damageext = static_library('libxserver_damageext',
|
libxserver_damageext = static_library('xserver_damageext',
|
||||||
srcs_damageext,
|
srcs_damageext,
|
||||||
include_directories: inc,
|
include_directories: inc,
|
||||||
dependencies: common_dep,
|
dependencies: common_dep,
|
||||||
|
|
|
@ -3,7 +3,7 @@ srcs_dbe = [
|
||||||
'midbe.c',
|
'midbe.c',
|
||||||
]
|
]
|
||||||
|
|
||||||
libxserver_dbe = static_library('libxserver_dbe',
|
libxserver_dbe = static_library('xserver_dbe',
|
||||||
srcs_dbe,
|
srcs_dbe,
|
||||||
include_directories: inc,
|
include_directories: inc,
|
||||||
dependencies: common_dep,
|
dependencies: common_dep,
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
#!/usr/bin/env bash
|
#!/bin/sh
|
||||||
# SPDX-License-Identifier: MIT OR X11
|
# SPDX-License-Identifier: MIT OR X11
|
||||||
#
|
#
|
||||||
# Copyright © 2024 Enrico Weigelt, metux IT consult <info@metux.net>
|
# Copyright © 2024 Enrico Weigelt, metux IT consult <info@metux.net>
|
||||||
|
@ -7,10 +7,10 @@ INPUT="$1"
|
||||||
OUTPUT="$2"
|
OUTPUT="$2"
|
||||||
|
|
||||||
do_line() {
|
do_line() {
|
||||||
local name="$1"
|
name="$1"
|
||||||
[ "$2" != "@" ] && return 0
|
[ "$2" != "@" ] && return 0
|
||||||
echo " if (MakeAtom(\"$name\", ${#name}, 1) != XA_$name)"
|
echo " if (MakeAtom(\"$name\", ${#name}, 1) != XA_$name)"
|
||||||
echo " FatalError(\"adding builtin atom\");"
|
echo " FatalError(\"Adding builtin atom\");"
|
||||||
}
|
}
|
||||||
|
|
||||||
cat > "$OUTPUT" << __END__
|
cat > "$OUTPUT" << __END__
|
||||||
|
@ -35,6 +35,6 @@ MakePredeclaredAtoms(void)
|
||||||
{
|
{
|
||||||
__END__
|
__END__
|
||||||
|
|
||||||
( grep '@' < "$INPUT" ) | ( while read l ; do do_line $l ; done ) >> "$OUTPUT"
|
( grep '@' < "$INPUT" ) | ( while IFS= read -r l ; do do_line $l ; done ) >> "$OUTPUT"
|
||||||
|
|
||||||
echo "}" >> "$OUTPUT"
|
echo "}" >> "$OUTPUT"
|
||||||
|
|
|
@ -57,13 +57,13 @@ endif
|
||||||
|
|
||||||
dtrace_dep = declare_dependency(sources: [dtrace_src, dtrace_hdr])
|
dtrace_dep = declare_dependency(sources: [dtrace_src, dtrace_hdr])
|
||||||
|
|
||||||
libxserver_dix = static_library('libxserver_dix',
|
libxserver_dix = static_library('xserver_dix',
|
||||||
[ srcs_dix, builtinatoms_src ],
|
[ srcs_dix, builtinatoms_src ],
|
||||||
include_directories: inc,
|
include_directories: inc,
|
||||||
dependencies: [ dtrace_dep, common_dep, ]
|
dependencies: [ dtrace_dep, common_dep, ]
|
||||||
)
|
)
|
||||||
|
|
||||||
libxserver_main = static_library('libxserver_main',
|
libxserver_main = static_library('xserver_main',
|
||||||
'stubmain.c',
|
'stubmain.c',
|
||||||
include_directories: inc,
|
include_directories: inc,
|
||||||
dependencies: common_dep,
|
dependencies: common_dep,
|
||||||
|
|
|
@ -157,11 +157,6 @@ static void
|
||||||
deliverPropertyNotifyEvent(WindowPtr pWin, int state, PropertyPtr pProp)
|
deliverPropertyNotifyEvent(WindowPtr pWin, int state, PropertyPtr pProp)
|
||||||
{
|
{
|
||||||
xEvent event;
|
xEvent event;
|
||||||
PropertyStateRec rec = {
|
|
||||||
.win = pWin,
|
|
||||||
.prop = pProp,
|
|
||||||
.state = state
|
|
||||||
};
|
|
||||||
UpdateCurrentTimeIf();
|
UpdateCurrentTimeIf();
|
||||||
event = (xEvent) {
|
event = (xEvent) {
|
||||||
.u.property.window = pWin->drawable.id,
|
.u.property.window = pWin->drawable.id,
|
||||||
|
|
|
@ -23,6 +23,7 @@ void dixFreeScreen(ScreenPtr pScreen)
|
||||||
DeleteCallbackList(&pScreen->hookWindowDestroy);
|
DeleteCallbackList(&pScreen->hookWindowDestroy);
|
||||||
DeleteCallbackList(&pScreen->hookWindowPosition);
|
DeleteCallbackList(&pScreen->hookWindowPosition);
|
||||||
DeleteCallbackList(&pScreen->hookClose);
|
DeleteCallbackList(&pScreen->hookClose);
|
||||||
|
DeleteCallbackList(&pScreen->hookPostClose);
|
||||||
DeleteCallbackList(&pScreen->hookPixmapDestroy);
|
DeleteCallbackList(&pScreen->hookPixmapDestroy);
|
||||||
free(pScreen);
|
free(pScreen);
|
||||||
}
|
}
|
||||||
|
|
|
@ -28,6 +28,7 @@
|
||||||
DECLARE_HOOK_PROC(WindowDestroy, hookWindowDestroy, XorgScreenWindowDestroyProcPtr);
|
DECLARE_HOOK_PROC(WindowDestroy, hookWindowDestroy, XorgScreenWindowDestroyProcPtr);
|
||||||
DECLARE_HOOK_PROC(WindowPosition, hookWindowPosition, XorgScreenWindowPositionProcPtr);
|
DECLARE_HOOK_PROC(WindowPosition, hookWindowPosition, XorgScreenWindowPositionProcPtr);
|
||||||
DECLARE_HOOK_PROC(Close, hookClose, XorgScreenCloseProcPtr);
|
DECLARE_HOOK_PROC(Close, hookClose, XorgScreenCloseProcPtr);
|
||||||
|
DECLARE_HOOK_PROC(PostClose, hookPostClose, XorgScreenCloseProcPtr);
|
||||||
DECLARE_HOOK_PROC(PixmapDestroy, hookPixmapDestroy, XorgScreenPixmapDestroyProcPtr);
|
DECLARE_HOOK_PROC(PixmapDestroy, hookPixmapDestroy, XorgScreenPixmapDestroyProcPtr);
|
||||||
DECLARE_HOOK_PROC(PostCreateResources, hookPostCreateResources,
|
DECLARE_HOOK_PROC(PostCreateResources, hookPostCreateResources,
|
||||||
XorgScreenPostCreateResourcesProcPtr);
|
XorgScreenPostCreateResourcesProcPtr);
|
||||||
|
@ -71,6 +72,8 @@ void dixScreenRaiseClose(ScreenPtr pScreen) {
|
||||||
|
|
||||||
if (pScreen->CloseScreen)
|
if (pScreen->CloseScreen)
|
||||||
pScreen->CloseScreen(pScreen);
|
pScreen->CloseScreen(pScreen);
|
||||||
|
|
||||||
|
CallCallbacks(&pScreen->hookPostClose, NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
void dixScreenRaisePixmapDestroy(PixmapPtr pPixmap)
|
void dixScreenRaisePixmapDestroy(PixmapPtr pPixmap)
|
||||||
|
|
|
@ -147,6 +147,37 @@ _X_EXPORT
|
||||||
void dixScreenUnhookClose(ScreenPtr pScreen,
|
void dixScreenUnhookClose(ScreenPtr pScreen,
|
||||||
XorgScreenCloseProcPtr func);
|
XorgScreenCloseProcPtr func);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief register a screen post close notify hook on the given screen
|
||||||
|
*
|
||||||
|
* @param pScreen pointer to the screen to register the notify hook into
|
||||||
|
* @param func pointer to the hook function
|
||||||
|
*
|
||||||
|
* In contrast to Close hook, it's called *after* the driver's CloseScreen()
|
||||||
|
* proc had been called.
|
||||||
|
*
|
||||||
|
* When registration fails, the server aborts.
|
||||||
|
**/
|
||||||
|
void dixScreenHookPostClose(ScreenPtr pScreen,
|
||||||
|
XorgScreenCloseProcPtr func);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief unregister a screen close notify hook on the given screen
|
||||||
|
*
|
||||||
|
* @param pScreen pointer to the screen to unregister the hook from
|
||||||
|
* @param func pointer to the hook function
|
||||||
|
* @param arg opaque pointer passed to the destructor
|
||||||
|
*
|
||||||
|
* @see dixScreenHookPostClose
|
||||||
|
*
|
||||||
|
* Unregister a screen close notify hook registered via @ref dixScreenHookPostClose
|
||||||
|
*
|
||||||
|
* In contrast to Close hook, it's called *after* the driver's CloseScreen()
|
||||||
|
* proc had been called.
|
||||||
|
**/
|
||||||
|
void dixScreenUnhookPostClose(ScreenPtr pScreen,
|
||||||
|
XorgScreenCloseProcPtr func);
|
||||||
|
|
||||||
/* prototype of pixmap destroy notification handler */
|
/* prototype of pixmap destroy notification handler */
|
||||||
typedef void (*XorgScreenPixmapDestroyProcPtr)(CallbackListPtr *pcbl,
|
typedef void (*XorgScreenPixmapDestroyProcPtr)(CallbackListPtr *pcbl,
|
||||||
ScreenPtr pScreen,
|
ScreenPtr pScreen,
|
||||||
|
|
|
@ -10,7 +10,7 @@ hdrs_dri3 = [
|
||||||
|
|
||||||
libxserver_dri3 = []
|
libxserver_dri3 = []
|
||||||
if build_dri3
|
if build_dri3
|
||||||
libxserver_dri3 = static_library('libxserver_dri3',
|
libxserver_dri3 = static_library('xserver_dri3',
|
||||||
srcs_dri3,
|
srcs_dri3,
|
||||||
include_directories: inc,
|
include_directories: inc,
|
||||||
dependencies: [ common_dep, libdrm_dep ],
|
dependencies: [ common_dep, libdrm_dep ],
|
||||||
|
|
|
@ -12,7 +12,7 @@ srcs_exa = [
|
||||||
'exa_unaccel.c',
|
'exa_unaccel.c',
|
||||||
]
|
]
|
||||||
|
|
||||||
libxserver_exa = static_library('libxserver_exa',
|
libxserver_exa = static_library('xserver_exa',
|
||||||
srcs_exa,
|
srcs_exa,
|
||||||
include_directories: inc,
|
include_directories: inc,
|
||||||
dependencies: common_dep,
|
dependencies: common_dep,
|
||||||
|
|
|
@ -37,7 +37,7 @@ hdrs_fb = [
|
||||||
'wfbrename.h'
|
'wfbrename.h'
|
||||||
]
|
]
|
||||||
|
|
||||||
libxserver_fb = static_library('libxserver_fb',
|
libxserver_fb = static_library('xserver_fb',
|
||||||
srcs_fb,
|
srcs_fb,
|
||||||
include_directories: inc,
|
include_directories: inc,
|
||||||
dependencies: common_dep,
|
dependencies: common_dep,
|
||||||
|
@ -46,7 +46,7 @@ libxserver_fb = static_library('libxserver_fb',
|
||||||
|
|
||||||
wfb_args = '-DFB_ACCESS_WRAPPER'
|
wfb_args = '-DFB_ACCESS_WRAPPER'
|
||||||
|
|
||||||
libxserver_wfb = static_library('libxserver_wfb',
|
libxserver_wfb = static_library('xserver_wfb',
|
||||||
srcs_fb,
|
srcs_fb,
|
||||||
c_args: wfb_args,
|
c_args: wfb_args,
|
||||||
include_directories: inc,
|
include_directories: inc,
|
||||||
|
|
|
@ -1,3 +1,6 @@
|
||||||
|
#ifndef XSERVER_WFBRENAME_H
|
||||||
|
#define XSERVER_WFBRENAME_H
|
||||||
|
|
||||||
#define fbAddTraps wfbAddTraps
|
#define fbAddTraps wfbAddTraps
|
||||||
#define fbAddTriangles wfbAddTriangles
|
#define fbAddTriangles wfbAddTriangles
|
||||||
#define fbAllocatePrivates wfbAllocatePrivates
|
#define fbAllocatePrivates wfbAllocatePrivates
|
||||||
|
@ -118,3 +121,5 @@
|
||||||
#define fbWinPrivateKeyRec wfbWinPrivateKeyRec
|
#define fbWinPrivateKeyRec wfbWinPrivateKeyRec
|
||||||
#define free_pixman_pict wfb_free_pixman_pict
|
#define free_pixman_pict wfb_free_pixman_pict
|
||||||
#define image_from_pict wfb_image_from_pict
|
#define image_from_pict wfb_image_from_pict
|
||||||
|
|
||||||
|
#endif /* XSERVER_WFBRENAME_H */
|
||||||
|
|
|
@ -185,6 +185,24 @@ glamor_glyph_add(struct glamor_glyph_atlas *atlas, DrawablePtr glyph_draw)
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static const glamor_facet glamor_facet_composite_glyphs_es300 = {
|
||||||
|
.name = "composite_glyphs",
|
||||||
|
.version = 130,
|
||||||
|
.fs_extensions = ("#extension GL_EXT_blend_func_extended : enable\n"),
|
||||||
|
.vs_vars = ("in vec4 primitive;\n"
|
||||||
|
"in vec2 source;\n"
|
||||||
|
"out vec2 glyph_pos;\n"),
|
||||||
|
.vs_exec = (" vec2 pos = primitive.zw * vec2(gl_VertexID&1, (gl_VertexID&2)>>1);\n"
|
||||||
|
GLAMOR_POS(gl_Position, (primitive.xy + pos))
|
||||||
|
" glyph_pos = (source + pos) * ATLAS_DIM_INV;\n"),
|
||||||
|
.fs_vars = ("in vec2 glyph_pos;\n"
|
||||||
|
"out vec4 color0;\n"
|
||||||
|
"out vec4 color1;\n"),
|
||||||
|
.fs_exec = (" vec4 mask = texture(atlas, glyph_pos);\n"),
|
||||||
|
.source_name = "source",
|
||||||
|
.locations = glamor_program_location_atlas,
|
||||||
|
};
|
||||||
|
|
||||||
static const glamor_facet glamor_facet_composite_glyphs_130 = {
|
static const glamor_facet glamor_facet_composite_glyphs_130 = {
|
||||||
.name = "composite_glyphs",
|
.name = "composite_glyphs",
|
||||||
.version = 130,
|
.version = 130,
|
||||||
|
@ -464,6 +482,8 @@ glamor_composite_glyphs(CARD8 op,
|
||||||
if (glamor_glsl_has_ints(glamor_priv))
|
if (glamor_glsl_has_ints(glamor_priv))
|
||||||
prog = glamor_setup_program_render(op, src, glyph_pict, dst,
|
prog = glamor_setup_program_render(op, src, glyph_pict, dst,
|
||||||
glyphs_program,
|
glyphs_program,
|
||||||
|
glamor_priv->is_gles ?
|
||||||
|
&glamor_facet_composite_glyphs_es300 :
|
||||||
&glamor_facet_composite_glyphs_130,
|
&glamor_facet_composite_glyphs_130,
|
||||||
glamor_priv->glyph_defines);
|
glamor_priv->glyph_defines);
|
||||||
else
|
else
|
||||||
|
|
|
@ -1192,6 +1192,8 @@ glamor_egl_init(ScrnInfoPtr scrn, int fd)
|
||||||
"dmabuf_capable");
|
"dmabuf_capable");
|
||||||
else if (strstr((const char *)renderer, "Intel"))
|
else if (strstr((const char *)renderer, "Intel"))
|
||||||
glamor_egl->dmabuf_capable = TRUE;
|
glamor_egl->dmabuf_capable = TRUE;
|
||||||
|
else if (strstr((const char *)renderer, "zink"))
|
||||||
|
glamor_egl->dmabuf_capable = TRUE;
|
||||||
else
|
else
|
||||||
glamor_egl->dmabuf_capable = FALSE;
|
glamor_egl->dmabuf_capable = FALSE;
|
||||||
}
|
}
|
||||||
|
|
|
@ -128,13 +128,10 @@ __glXSendReply(ClientPtr client, const void *data, size_t elements,
|
||||||
.retval = retval,
|
.retval = retval,
|
||||||
};
|
};
|
||||||
|
|
||||||
/* It is faster on almost always every architecture to just copy the 8
|
/* Single element goes in reply padding; don't leak uninitialized data. */
|
||||||
* bytes, even when not necessary, than check to see of the value of
|
if (elements == 1) {
|
||||||
* elements requires it. Copying the data when not needed will do no
|
(void) memcpy(&reply.pad3, data, element_size);
|
||||||
* harm.
|
}
|
||||||
*/
|
|
||||||
|
|
||||||
(void) memcpy(&reply.pad3, data, 8);
|
|
||||||
WriteToClient(client, sizeof(xGLXSingleReply), &reply);
|
WriteToClient(client, sizeof(xGLXSingleReply), &reply);
|
||||||
|
|
||||||
if (reply_ints != 0) {
|
if (reply_ints != 0) {
|
||||||
|
@ -176,13 +173,10 @@ __glXSendReplySwap(ClientPtr client, const void *data, size_t elements,
|
||||||
.retval = bswap_32(retval),
|
.retval = bswap_32(retval),
|
||||||
};
|
};
|
||||||
|
|
||||||
/* It is faster on almost always every architecture to just copy the 8
|
/* Single element goes in reply padding; don't leak uninitialized data. */
|
||||||
* bytes, even when not necessary, than check to see of the value of
|
if (elements == 1) {
|
||||||
* elements requires it. Copying the data when not needed will do no
|
(void) memcpy(&reply.pad3, data, element_size);
|
||||||
* harm.
|
}
|
||||||
*/
|
|
||||||
|
|
||||||
(void) memcpy(&reply.pad3, data, 8);
|
|
||||||
WriteToClient(client, sizeof(xGLXSingleReply), &reply);
|
WriteToClient(client, sizeof(xGLXSingleReply), &reply);
|
||||||
|
|
||||||
if (reply_ints != 0) {
|
if (reply_ints != 0) {
|
||||||
|
|
|
@ -32,7 +32,7 @@ srcs_glx = [
|
||||||
|
|
||||||
libxserver_glx = []
|
libxserver_glx = []
|
||||||
if build_glx
|
if build_glx
|
||||||
libxserver_glx = static_library('libxserver_glx',
|
libxserver_glx = static_library('xserver_glx',
|
||||||
srcs_glx,
|
srcs_glx,
|
||||||
include_directories: inc,
|
include_directories: inc,
|
||||||
dependencies: [
|
dependencies: [
|
||||||
|
@ -68,7 +68,7 @@ hdrs_vnd = [
|
||||||
|
|
||||||
libglxvnd = []
|
libglxvnd = []
|
||||||
if build_glx
|
if build_glx
|
||||||
libglxvnd = static_library('libglxvnd',
|
libglxvnd = static_library('glxvnd',
|
||||||
srcs_vnd,
|
srcs_vnd,
|
||||||
include_directories: inc,
|
include_directories: inc,
|
||||||
dependencies: [
|
dependencies: [
|
||||||
|
|
|
@ -347,7 +347,7 @@ __glXTypeSize(GLenum enm)
|
||||||
case GL_INT:
|
case GL_INT:
|
||||||
return sizeof(GLint);
|
return sizeof(GLint);
|
||||||
case GL_UNSIGNED_INT:
|
case GL_UNSIGNED_INT:
|
||||||
return sizeof(GLint);
|
return sizeof(GLuint);
|
||||||
case GL_FLOAT:
|
case GL_FLOAT:
|
||||||
return sizeof(GLfloat);
|
return sizeof(GLfloat);
|
||||||
case GL_DOUBLE:
|
case GL_DOUBLE:
|
||||||
|
|
|
@ -105,7 +105,7 @@ __glGetMap_size(GLenum target, GLenum query)
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
return -1;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
GLint
|
GLint
|
||||||
|
@ -164,7 +164,7 @@ __glGetPixelMap_size(GLenum map)
|
||||||
query = GL_PIXEL_MAP_A_TO_A_SIZE;
|
query = GL_PIXEL_MAP_A_TO_A_SIZE;
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
return -1;
|
return 0;
|
||||||
}
|
}
|
||||||
glGetIntegerv(query, &size);
|
glGetIntegerv(query, &size);
|
||||||
return size;
|
return size;
|
||||||
|
|
|
@ -61,7 +61,12 @@ typedef struct _EphyrInputPrivate {
|
||||||
|
|
||||||
Bool EphyrWantGrayScale = 0;
|
Bool EphyrWantGrayScale = 0;
|
||||||
Bool EphyrWantResize = 0;
|
Bool EphyrWantResize = 0;
|
||||||
Bool EphyrWantNoHostGrab = 0;
|
|
||||||
|
static xcb_mod_mask_t EphyrKeybindToggleHostGrabModMask;
|
||||||
|
static uint32_t EphyrKeybindToggleHostGrabKey;
|
||||||
|
static char const* EphyrTitleHostGrabKeyComboHint;
|
||||||
|
static uint8_t EphyrTitleHostGrabKeyComboHintLen;
|
||||||
|
static Bool EphyrHostGrabSet = FALSE;
|
||||||
|
|
||||||
Bool
|
Bool
|
||||||
ephyrInitialize(KdCardInfo * card, EphyrPriv * priv)
|
ephyrInitialize(KdCardInfo * card, EphyrPriv * priv)
|
||||||
|
@ -649,6 +654,114 @@ ephyrCreateColormap(ColormapPtr pmap)
|
||||||
return fbInitializeColormap(pmap);
|
return fbInitializeColormap(pmap);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Bool
|
||||||
|
ephyrSetGrabShortcut(char const* const desc)
|
||||||
|
{
|
||||||
|
if (desc == NULL || !strcmp(desc, "NULL")) {
|
||||||
|
EphyrKeybindToggleHostGrabModMask = 0;
|
||||||
|
EphyrKeybindToggleHostGrabKey = 0;
|
||||||
|
EphyrTitleHostGrabKeyComboHint = NULL;
|
||||||
|
EphyrTitleHostGrabKeyComboHintLen = 0;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
const uint8_t fixed_bound = 255;
|
||||||
|
char buf[16];
|
||||||
|
uint8_t j = 0;
|
||||||
|
for (uint8_t i = 0;; ++i) {
|
||||||
|
assert(i < fixed_bound);
|
||||||
|
char const c = desc[i];
|
||||||
|
if (c == 0 || (j != 0 && c == '+')) {
|
||||||
|
buf[j] = 0;
|
||||||
|
if (j == 1) {
|
||||||
|
EphyrKeybindToggleHostGrabKey = buf[0];
|
||||||
|
}
|
||||||
|
else if (!strcmp(buf, "ctrl")) {
|
||||||
|
EphyrKeybindToggleHostGrabModMask |= XCB_MOD_MASK_CONTROL;
|
||||||
|
}
|
||||||
|
else if (!strcmp(buf, "shift")) {
|
||||||
|
EphyrKeybindToggleHostGrabModMask |= XCB_MOD_MASK_SHIFT;
|
||||||
|
}
|
||||||
|
else if (!strcmp(buf, "lock")) {
|
||||||
|
EphyrKeybindToggleHostGrabModMask |= XCB_MOD_MASK_LOCK;
|
||||||
|
}
|
||||||
|
else if (!strcmp(buf, "mod1")) {
|
||||||
|
EphyrKeybindToggleHostGrabModMask |= XCB_MOD_MASK_1;
|
||||||
|
}
|
||||||
|
else if (!strcmp(buf, "mod2")) {
|
||||||
|
EphyrKeybindToggleHostGrabModMask |= XCB_MOD_MASK_2;
|
||||||
|
}
|
||||||
|
else if (!strcmp(buf, "mod3")) {
|
||||||
|
EphyrKeybindToggleHostGrabModMask |= XCB_MOD_MASK_3;
|
||||||
|
}
|
||||||
|
else if (!strcmp(buf, "mod4")) {
|
||||||
|
EphyrKeybindToggleHostGrabModMask |= XCB_MOD_MASK_4;
|
||||||
|
}
|
||||||
|
else if (!strcmp(buf, "mod5")) {
|
||||||
|
EphyrKeybindToggleHostGrabModMask |= XCB_MOD_MASK_5;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
ErrorF("ephyr: -host-grab: "
|
||||||
|
"Unrecognized key: '%s'\n", buf);
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
if (c == 0) break;
|
||||||
|
j = 0;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
buf[j] = c;
|
||||||
|
++j;
|
||||||
|
assert(j < sizeof(buf));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
EphyrTitleHostGrabKeyComboHint = desc;
|
||||||
|
EphyrTitleHostGrabKeyComboHintLen = strlen(desc);
|
||||||
|
}
|
||||||
|
|
||||||
|
EphyrHostGrabSet = TRUE;
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
ephyrPrintGrabShortcut(char* const out, size_t const out_size,
|
||||||
|
Bool const currently_grabbed)
|
||||||
|
{
|
||||||
|
if (
|
||||||
|
(
|
||||||
|
EphyrKeybindToggleHostGrabModMask == 0 &&
|
||||||
|
EphyrKeybindToggleHostGrabKey == 0
|
||||||
|
) || (
|
||||||
|
EphyrTitleHostGrabKeyComboHint == 0 ||
|
||||||
|
EphyrTitleHostGrabKeyComboHintLen == 0
|
||||||
|
)
|
||||||
|
) {
|
||||||
|
/* grabbing disabled */
|
||||||
|
out[0] = '\0';
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
char const* const suffix = currently_grabbed
|
||||||
|
? " releases mouse and keyboard)"
|
||||||
|
: " grabs mouse and keyboard)";
|
||||||
|
size_t const suffix_len = strlen(suffix);
|
||||||
|
|
||||||
|
assert(out_size > 1 + EphyrTitleHostGrabKeyComboHintLen + suffix_len + 1);
|
||||||
|
assert(out != NULL);
|
||||||
|
|
||||||
|
out[0] = '(';
|
||||||
|
memcpy(out + 1, EphyrTitleHostGrabKeyComboHint, EphyrTitleHostGrabKeyComboHintLen);
|
||||||
|
|
||||||
|
memcpy(out + EphyrTitleHostGrabKeyComboHintLen + 1, suffix, suffix_len + 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
ephyrUpdateWindowTitle(KdScreenInfo* const screen, Bool const currently_grabbed)
|
||||||
|
{
|
||||||
|
char title_buf[128];
|
||||||
|
ephyrPrintGrabShortcut(title_buf, sizeof(title_buf), currently_grabbed);
|
||||||
|
hostx_set_win_title(screen, title_buf);
|
||||||
|
}
|
||||||
|
|
||||||
Bool
|
Bool
|
||||||
ephyrInitScreen(ScreenPtr pScreen)
|
ephyrInitScreen(ScreenPtr pScreen)
|
||||||
{
|
{
|
||||||
|
@ -657,11 +770,10 @@ ephyrInitScreen(ScreenPtr pScreen)
|
||||||
|
|
||||||
EPHYR_LOG("pScreen->myNum:%d\n", pScreen->myNum);
|
EPHYR_LOG("pScreen->myNum:%d\n", pScreen->myNum);
|
||||||
hostx_set_screen_number(screen, pScreen->myNum);
|
hostx_set_screen_number(screen, pScreen->myNum);
|
||||||
if (EphyrWantNoHostGrab) {
|
if (!EphyrHostGrabSet) {
|
||||||
hostx_set_win_title(screen, "xephyr");
|
ephyrSetGrabShortcut("ctrl+shift");
|
||||||
} else {
|
|
||||||
hostx_set_win_title(screen, "(ctrl+shift grabs mouse and keyboard)");
|
|
||||||
}
|
}
|
||||||
|
ephyrUpdateWindowTitle(screen, FALSE);
|
||||||
pScreen->CreateColormap = ephyrCreateColormap;
|
pScreen->CreateColormap = ephyrCreateColormap;
|
||||||
|
|
||||||
#ifdef XV
|
#ifdef XV
|
||||||
|
@ -1019,22 +1131,32 @@ ephyrProcessKeyPress(xcb_generic_event_t *xev)
|
||||||
static void
|
static void
|
||||||
ephyrProcessKeyRelease(xcb_generic_event_t *xev)
|
ephyrProcessKeyRelease(xcb_generic_event_t *xev)
|
||||||
{
|
{
|
||||||
xcb_connection_t *conn = hostx_get_xcbconn();
|
|
||||||
xcb_key_release_event_t *key = (xcb_key_release_event_t *)xev;
|
xcb_key_release_event_t *key = (xcb_key_release_event_t *)xev;
|
||||||
|
if (EphyrKeybindToggleHostGrabModMask != 0 ||
|
||||||
|
EphyrKeybindToggleHostGrabKey != 0) {
|
||||||
|
|
||||||
|
xcb_connection_t *conn = hostx_get_xcbconn();
|
||||||
static xcb_key_symbols_t *keysyms;
|
static xcb_key_symbols_t *keysyms;
|
||||||
static int grabbed_screen = -1;
|
static int grabbed_screen = -1;
|
||||||
int mod1_down = ephyrUpdateGrabModifierState(key->state);
|
|
||||||
|
|
||||||
if (!keysyms)
|
if (!keysyms)
|
||||||
keysyms = xcb_key_symbols_alloc(conn);
|
keysyms = xcb_key_symbols_alloc(conn);
|
||||||
|
|
||||||
if (!EphyrWantNoHostGrab &&
|
int const keysym =
|
||||||
(((xcb_key_symbols_get_keysym(keysyms, key->detail, 0) == XK_Shift_L
|
xcb_key_symbols_get_keysym(keysyms, key->detail, 0);
|
||||||
|| xcb_key_symbols_get_keysym(keysyms, key->detail, 0) == XK_Shift_R)
|
|
||||||
&& (key->state & XCB_MOD_MASK_CONTROL)) ||
|
if (
|
||||||
((xcb_key_symbols_get_keysym(keysyms, key->detail, 0) == XK_Control_L
|
(
|
||||||
|| xcb_key_symbols_get_keysym(keysyms, key->detail, 0) == XK_Control_R)
|
(key->state & EphyrKeybindToggleHostGrabModMask) ==
|
||||||
&& (key->state & XCB_MOD_MASK_SHIFT)))) {
|
EphyrKeybindToggleHostGrabModMask
|
||||||
|
) && (
|
||||||
|
/* NOTE: mod-key keysyms are > 0xfe00. We do this so when the
|
||||||
|
shortcut is only mod-keys (e.g. ctrl+shift) and the user
|
||||||
|
releases any other key, input doesn't get grabbed */
|
||||||
|
(EphyrKeybindToggleHostGrabKey == 0 && keysym > 0xfe00) ||
|
||||||
|
keysym == EphyrKeybindToggleHostGrabKey
|
||||||
|
)
|
||||||
|
) {
|
||||||
KdScreenInfo *screen = screen_from_window(key->event);
|
KdScreenInfo *screen = screen_from_window(key->event);
|
||||||
assert(screen);
|
assert(screen);
|
||||||
EphyrScrPriv *scrpriv = screen->driver;
|
EphyrScrPriv *scrpriv = screen->driver;
|
||||||
|
@ -1043,10 +1165,8 @@ ephyrProcessKeyRelease(xcb_generic_event_t *xev)
|
||||||
xcb_ungrab_keyboard(conn, XCB_TIME_CURRENT_TIME);
|
xcb_ungrab_keyboard(conn, XCB_TIME_CURRENT_TIME);
|
||||||
xcb_ungrab_pointer(conn, XCB_TIME_CURRENT_TIME);
|
xcb_ungrab_pointer(conn, XCB_TIME_CURRENT_TIME);
|
||||||
grabbed_screen = -1;
|
grabbed_screen = -1;
|
||||||
hostx_set_win_title(screen,
|
|
||||||
"(ctrl+shift grabs mouse and keyboard)");
|
|
||||||
}
|
}
|
||||||
else if (!mod1_down) {
|
else {
|
||||||
/* Attempt grab */
|
/* Attempt grab */
|
||||||
xcb_grab_keyboard_cookie_t kbgrabc =
|
xcb_grab_keyboard_cookie_t kbgrabc =
|
||||||
xcb_grab_keyboard(conn,
|
xcb_grab_keyboard(conn,
|
||||||
|
@ -1079,12 +1199,11 @@ ephyrProcessKeyRelease(xcb_generic_event_t *xev)
|
||||||
XCB_TIME_CURRENT_TIME);
|
XCB_TIME_CURRENT_TIME);
|
||||||
} else {
|
} else {
|
||||||
grabbed_screen = scrpriv->mynum;
|
grabbed_screen = scrpriv->mynum;
|
||||||
hostx_set_win_title
|
|
||||||
(screen,
|
|
||||||
"(ctrl+shift releases mouse and keyboard)");
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
ephyrUpdateWindowTitle(screen, grabbed_screen != -1);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!ephyrKbd ||
|
if (!ephyrKbd ||
|
||||||
|
@ -1316,12 +1435,11 @@ MouseFini(KdPointerInfo * pi)
|
||||||
}
|
}
|
||||||
|
|
||||||
KdPointerDriver EphyrMouseDriver = {
|
KdPointerDriver EphyrMouseDriver = {
|
||||||
"ephyr",
|
.name = "ephyr",
|
||||||
MouseInit,
|
.Init = MouseInit,
|
||||||
MouseEnable,
|
.Enable = MouseEnable,
|
||||||
MouseDisable,
|
.Disable = MouseDisable,
|
||||||
MouseFini,
|
.Fini = MouseFini,
|
||||||
NULL,
|
|
||||||
};
|
};
|
||||||
|
|
||||||
/* Keyboard */
|
/* Keyboard */
|
||||||
|
@ -1390,12 +1508,11 @@ EphyrKeyboardBell(KdKeyboardInfo * ki, int volume, int frequency, int duration)
|
||||||
}
|
}
|
||||||
|
|
||||||
KdKeyboardDriver EphyrKeyboardDriver = {
|
KdKeyboardDriver EphyrKeyboardDriver = {
|
||||||
"ephyr",
|
.name = "ephyr",
|
||||||
EphyrKeyboardInit,
|
.Init = EphyrKeyboardInit,
|
||||||
EphyrKeyboardEnable,
|
.Enable = EphyrKeyboardEnable,
|
||||||
EphyrKeyboardLeds,
|
.Leds = EphyrKeyboardLeds,
|
||||||
EphyrKeyboardBell,
|
.Bell = EphyrKeyboardBell,
|
||||||
EphyrKeyboardDisable,
|
.Disable = EphyrKeyboardDisable,
|
||||||
EphyrKeyboardFini,
|
.Fini = EphyrKeyboardFini,
|
||||||
NULL,
|
|
||||||
};
|
};
|
||||||
|
|
|
@ -167,6 +167,14 @@ Bool
|
||||||
Bool
|
Bool
|
||||||
ephyrCreateColormap(ColormapPtr pmap);
|
ephyrCreateColormap(ColormapPtr pmap);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param desc examples: "ctrl+shift", "ctrl+mod1+a", "a",
|
||||||
|
* NULL (disables host grab)
|
||||||
|
* @return TRUE if success, otherwise FALSE
|
||||||
|
*/
|
||||||
|
Bool
|
||||||
|
ephyrSetGrabShortcut(char const* const desc);
|
||||||
|
|
||||||
#ifdef RANDR
|
#ifdef RANDR
|
||||||
Bool
|
Bool
|
||||||
ephyrRandRGetInfo(ScreenPtr pScreen, Rotation * rotations);
|
ephyrRandRGetInfo(ScreenPtr pScreen, Rotation * rotations);
|
||||||
|
|
|
@ -21,6 +21,9 @@
|
||||||
* IN THE SOFTWARE.
|
* IN THE SOFTWARE.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
#ifndef XSERVER_KDRIVE_EPHYR_GLAMOR_H
|
||||||
|
#define XSERVER_KDRIVE_EPHYR_GLAMOR_H
|
||||||
|
|
||||||
#include <xcb/xcb.h>
|
#include <xcb/xcb.h>
|
||||||
#include "dix-config.h"
|
#include "dix-config.h"
|
||||||
|
|
||||||
|
@ -63,3 +66,5 @@ ephyr_glamor_damage_redisplay(struct ephyr_glamor *glamor,
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif /* !GLAMOR */
|
#endif /* !GLAMOR */
|
||||||
|
|
||||||
|
#endif /* XSERVER_KDRIVE_EPHYR_GLAMOR_H */
|
||||||
|
|
|
@ -38,7 +38,6 @@
|
||||||
extern Window EphyrPreExistingHostWin;
|
extern Window EphyrPreExistingHostWin;
|
||||||
extern Bool EphyrWantGrayScale;
|
extern Bool EphyrWantGrayScale;
|
||||||
extern Bool EphyrWantResize;
|
extern Bool EphyrWantResize;
|
||||||
extern Bool EphyrWantNoHostGrab;
|
|
||||||
extern Bool kdHasPointer;
|
extern Bool kdHasPointer;
|
||||||
extern Bool kdHasKbd;
|
extern Bool kdHasKbd;
|
||||||
extern Bool ephyr_glamor, ephyr_glamor_gles2, ephyr_glamor_skip_present;
|
extern Bool ephyr_glamor, ephyr_glamor_gles2, ephyr_glamor_skip_present;
|
||||||
|
@ -144,6 +143,8 @@ ddxUseMsg(void)
|
||||||
ErrorF
|
ErrorF
|
||||||
("-title [title] set the window title in the WM_NAME property\n");
|
("-title [title] set the window title in the WM_NAME property\n");
|
||||||
ErrorF("-no-host-grab Disable grabbing the keyboard and mouse.\n");
|
ErrorF("-no-host-grab Disable grabbing the keyboard and mouse.\n");
|
||||||
|
ErrorF
|
||||||
|
("-host-grab [keys] set shortcut to grab the keyboard and mouse (default: ctrl+shift)\n");
|
||||||
ErrorF("\n");
|
ErrorF("\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -343,9 +344,21 @@ ddxProcessArgument(int argc, char **argv, int i)
|
||||||
}
|
}
|
||||||
/* end Xnest compat */
|
/* end Xnest compat */
|
||||||
else if (!strcmp(argv[i], "-no-host-grab")) {
|
else if (!strcmp(argv[i], "-no-host-grab")) {
|
||||||
EphyrWantNoHostGrab = 1;
|
ephyrSetGrabShortcut(NULL);
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
else if (!strcmp(argv[i], "-host-grab")) {
|
||||||
|
if (i + 1 >= argc) {
|
||||||
|
ErrorF(
|
||||||
|
"ephyr: -host-grab requires an argument e.g. ctrl+shift+x\n");
|
||||||
|
exit(1);
|
||||||
|
}
|
||||||
|
else if (!ephyrSetGrabShortcut(argv[i + 1])) {
|
||||||
|
/* specific error message is printed in ephyrSetGrabShortcut */
|
||||||
|
exit(1);
|
||||||
|
}
|
||||||
|
return 2;
|
||||||
|
}
|
||||||
else if (!strcmp(argv[i], "-sharevts") ||
|
else if (!strcmp(argv[i], "-sharevts") ||
|
||||||
!strcmp(argv[i], "-novtswitch")) {
|
!strcmp(argv[i], "-novtswitch")) {
|
||||||
return 1;
|
return 1;
|
||||||
|
@ -357,6 +370,23 @@ ddxProcessArgument(int argc, char **argv, int i)
|
||||||
return KdProcessArgument(argc, argv, i);
|
return KdProcessArgument(argc, argv, i);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static int
|
||||||
|
EphyrInit(void)
|
||||||
|
{
|
||||||
|
/*
|
||||||
|
* make sure at least one screen
|
||||||
|
* has been added to the system.
|
||||||
|
*/
|
||||||
|
if (!KdCardInfoLast()) {
|
||||||
|
processScreenArg("640x480", NULL);
|
||||||
|
}
|
||||||
|
return hostx_init();
|
||||||
|
}
|
||||||
|
|
||||||
|
KdOsFuncs EphyrOsFuncs = {
|
||||||
|
.Init = EphyrInit,
|
||||||
|
};
|
||||||
|
|
||||||
void
|
void
|
||||||
OsVendorInit(void)
|
OsVendorInit(void)
|
||||||
{
|
{
|
||||||
|
@ -368,32 +398,23 @@ OsVendorInit(void)
|
||||||
if (hostx_want_host_cursor())
|
if (hostx_want_host_cursor())
|
||||||
ephyrFuncs.initCursor = &ephyrCursorInit;
|
ephyrFuncs.initCursor = &ephyrCursorInit;
|
||||||
|
|
||||||
if (serverGeneration == 1) {
|
KdOsInit(&EphyrOsFuncs);
|
||||||
if (!KdCardInfoLast()) {
|
|
||||||
processScreenArg("640x480", NULL);
|
|
||||||
}
|
|
||||||
hostx_init();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
KdCardFuncs ephyrFuncs = {
|
KdCardFuncs ephyrFuncs = {
|
||||||
ephyrCardInit, /* cardinit */
|
.cardinit = ephyrCardInit,
|
||||||
ephyrScreenInitialize, /* scrinit */
|
.scrinit = ephyrScreenInitialize,
|
||||||
ephyrInitScreen, /* initScreen */
|
.initScreen = ephyrInitScreen,
|
||||||
ephyrFinishInitScreen, /* finishInitScreen */
|
.finishInitScreen = ephyrFinishInitScreen,
|
||||||
ephyrCreateResources, /* createRes */
|
.createRes = ephyrCreateResources,
|
||||||
ephyrScreenFini, /* scrfini */
|
|
||||||
ephyrCardFini, /* cardfini */
|
|
||||||
|
|
||||||
0, /* initCursor */
|
.scrfini = ephyrScreenFini,
|
||||||
|
.cardfini = ephyrCardFini,
|
||||||
|
|
||||||
0, /* initAccel */
|
/* no cursor or accel funcs here */
|
||||||
0, /* enableAccel */
|
|
||||||
0, /* disableAccel */
|
|
||||||
0, /* finiAccel */
|
|
||||||
|
|
||||||
ephyrGetColors, /* getColors */
|
.getColors = ephyrGetColors,
|
||||||
ephyrPutColors, /* putColors */
|
.putColors = ephyrPutColors,
|
||||||
|
|
||||||
ephyrCloseScreen, /* closeScreen */
|
.closeScreen = ephyrCloseScreen,
|
||||||
};
|
};
|
||||||
|
|
|
@ -67,6 +67,31 @@ window. By default, the Xephyr window has a fixed size.
|
||||||
.TP 8
|
.TP 8
|
||||||
.B \-no\-host\-grab
|
.B \-no\-host\-grab
|
||||||
Disable grabbing the keyboard and mouse.
|
Disable grabbing the keyboard and mouse.
|
||||||
|
.TP 8
|
||||||
|
.BI \-host\-grab " keys"
|
||||||
|
Set the keyboard shortcut for Xephyr to grab keyboard and mouse
|
||||||
|
input. Possible values for mod-keys are: ctrl, shift, lock,
|
||||||
|
mod1, mod2, mod3, mod4, mod5. Up to one ascii character (lower-case) can
|
||||||
|
be used by itself or in conjunction with mod-keys. Keys are concatenated
|
||||||
|
with
|
||||||
|
.I +\fP. If omitted, defaults to
|
||||||
|
.I ctrl+shift\fP.
|
||||||
|
|
||||||
|
Examples:
|
||||||
|
.RS
|
||||||
|
.IP \[bu] 2
|
||||||
|
.I ctrl+mod1
|
||||||
|
.IP \[bu] 2
|
||||||
|
.I ctrl+shift++
|
||||||
|
(note that the
|
||||||
|
.I +
|
||||||
|
at the end is interpreted as the ascii character '+')
|
||||||
|
.IP \[bu] 2
|
||||||
|
.I a
|
||||||
|
(mod-keys are optional, this will grab/release whenever the
|
||||||
|
.I a
|
||||||
|
key is pressed)
|
||||||
|
.RE
|
||||||
.SH "SIGNALS"
|
.SH "SIGNALS"
|
||||||
Send a SIGUSR1 to the server (e.g. pkill \-USR1 Xephyr) to
|
Send a SIGUSR1 to the server (e.g. pkill \-USR1 Xephyr) to
|
||||||
toggle the debugging mode.
|
toggle the debugging mode.
|
||||||
|
|
|
@ -91,6 +91,14 @@ const char *kdGlobalXkbLayout = NULL;
|
||||||
const char *kdGlobalXkbVariant = NULL;
|
const char *kdGlobalXkbVariant = NULL;
|
||||||
const char *kdGlobalXkbOptions = NULL;
|
const char *kdGlobalXkbOptions = NULL;
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Carry arguments from InitOutput through driver initialization
|
||||||
|
* to KdScreenInit
|
||||||
|
*/
|
||||||
|
|
||||||
|
KdOsFuncs *kdOsFuncs = NULL;
|
||||||
|
|
||||||
void
|
void
|
||||||
KdDisableScreen(ScreenPtr pScreen)
|
KdDisableScreen(ScreenPtr pScreen)
|
||||||
{
|
{
|
||||||
|
@ -517,6 +525,19 @@ KdProcessArgument(int argc, char **argv, int i)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
KdOsInit(KdOsFuncs * pOsFuncs)
|
||||||
|
{
|
||||||
|
kdOsFuncs = pOsFuncs;
|
||||||
|
if (pOsFuncs) {
|
||||||
|
if (serverGeneration == 1) {
|
||||||
|
KdDoSwitchCmd("start");
|
||||||
|
if (pOsFuncs->Init)
|
||||||
|
(*pOsFuncs->Init) ();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
static Bool
|
static Bool
|
||||||
KdAllocatePrivates(ScreenPtr pScreen)
|
KdAllocatePrivates(ScreenPtr pScreen)
|
||||||
{
|
{
|
||||||
|
|
|
@ -278,6 +278,16 @@ int KdAddConfigKeyboard(char *pointer);
|
||||||
int KdAddKeyboard(KdKeyboardInfo * ki);
|
int KdAddKeyboard(KdKeyboardInfo * ki);
|
||||||
void KdRemoveKeyboard(KdKeyboardInfo * ki);
|
void KdRemoveKeyboard(KdKeyboardInfo * ki);
|
||||||
|
|
||||||
|
typedef struct _KdOsFuncs {
|
||||||
|
int (*Init) (void); /* Only called when the X server is started, when serverGeneration == 1 */
|
||||||
|
void (*Enable) (void);
|
||||||
|
Bool (*SpecialKey) (KeySym);
|
||||||
|
void (*Disable) (void);
|
||||||
|
void (*Fini) (void);
|
||||||
|
void (*pollEvents) (void);
|
||||||
|
void (*Bell) (int, int, int);
|
||||||
|
} KdOsFuncs;
|
||||||
|
|
||||||
typedef struct _KdPointerMatrix {
|
typedef struct _KdPointerMatrix {
|
||||||
int matrix[2][3];
|
int matrix[2][3];
|
||||||
} KdPointerMatrix;
|
} KdPointerMatrix;
|
||||||
|
@ -289,6 +299,8 @@ extern DevPrivateKeyRec kdScreenPrivateKeyRec;
|
||||||
extern Bool kdEmulateMiddleButton;
|
extern Bool kdEmulateMiddleButton;
|
||||||
extern Bool kdDisableZaphod;
|
extern Bool kdDisableZaphod;
|
||||||
|
|
||||||
|
extern KdOsFuncs *kdOsFuncs;
|
||||||
|
|
||||||
#define KdGetScreenPriv(pScreen) ((KdPrivScreenPtr) \
|
#define KdGetScreenPriv(pScreen) ((KdPrivScreenPtr) \
|
||||||
dixLookupPrivate(&(pScreen)->devPrivates, kdScreenPrivateKey))
|
dixLookupPrivate(&(pScreen)->devPrivates, kdScreenPrivateKey))
|
||||||
#define KdSetScreenPriv(pScreen,v) \
|
#define KdSetScreenPriv(pScreen,v) \
|
||||||
|
@ -345,6 +357,9 @@ void
|
||||||
int
|
int
|
||||||
KdProcessArgument(int argc, char **argv, int i);
|
KdProcessArgument(int argc, char **argv, int i);
|
||||||
|
|
||||||
|
void
|
||||||
|
KdOsInit(KdOsFuncs * pOsFuncs);
|
||||||
|
|
||||||
void
|
void
|
||||||
KdOsAddInputDrivers(void);
|
KdOsAddInputDrivers(void);
|
||||||
|
|
||||||
|
|
|
@ -259,13 +259,6 @@ ddxGiveUp(enum ExitCode error)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef __APPLE__
|
|
||||||
void
|
|
||||||
DarwinHandleGUI(int argc, char *argv[])
|
|
||||||
{
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
void
|
void
|
||||||
OsVendorInit(void)
|
OsVendorInit(void)
|
||||||
{
|
{
|
||||||
|
|
|
@ -75,7 +75,11 @@ extern int pciSlotClaimed;
|
||||||
Bool xf86ComparePciBusString(const char *busID, int bus, int device, int func);
|
Bool xf86ComparePciBusString(const char *busID, int bus, int device, int func);
|
||||||
Bool xf86DriverHasEntities(DriverPtr drvp);
|
Bool xf86DriverHasEntities(DriverPtr drvp);
|
||||||
void xf86RemoveEntityFromScreen(ScrnInfoPtr pScrn, int entityIndex);
|
void xf86RemoveEntityFromScreen(ScrnInfoPtr pScrn, int entityIndex);
|
||||||
|
|
||||||
|
_X_EXPORT /* only for internal int10 module - not supposed to be used by OOT drivers */
|
||||||
Bool xf86IsEntityPrimary(int entityIndex);
|
Bool xf86IsEntityPrimary(int entityIndex);
|
||||||
|
|
||||||
|
_X_EXPORT /* only for internal int10 module - not supposed to be used by OOT drivers */
|
||||||
ScrnInfoPtr xf86FindScreenForEntity(int entityIndex);
|
ScrnInfoPtr xf86FindScreenForEntity(int entityIndex);
|
||||||
|
|
||||||
Bool xf86BusConfig(void);
|
Bool xf86BusConfig(void);
|
||||||
|
|
|
@ -342,8 +342,31 @@ xf86UpdateHasVTProperty(Bool hasVT)
|
||||||
|
|
||||||
static void xf86DisableInputHandler(void *handler);
|
static void xf86DisableInputHandler(void *handler);
|
||||||
static void xf86EnableInputHandler(void *handler);
|
static void xf86EnableInputHandler(void *handler);
|
||||||
static void xf86DisableGeneralHandler(void *handler);
|
|
||||||
static void xf86EnableGeneralHandler(void *handler);
|
static void _xf86EnableGeneralHandler(void *handler);
|
||||||
|
static void _xf86DisableGeneralHandler(void *handler);
|
||||||
|
|
||||||
|
_X_EXPORT /* needs to be exported for Nvidia legacy (470.256.02) */
|
||||||
|
void xf86EnableGeneralHandler(void *handler);
|
||||||
|
|
||||||
|
_X_EXPORT /* needs to be exported for Nvidia legacy (470.256.02) */
|
||||||
|
void xf86DisableGeneralHandler(void *handler);
|
||||||
|
|
||||||
|
void xf86EnableGeneralHandler(void *handler) {
|
||||||
|
LogMessageVerb(X_WARNING, 0, "Outdated driver still using xf86EnableGeneralHandler() !\n");
|
||||||
|
LogMessageVerb(X_WARNING, 0, "File a bug report to driver vendor or use a FOSS driver.\n");
|
||||||
|
LogMessageVerb(X_WARNING, 0, "https://forums.developer.nvidia.com/c/gpu-graphics/linux/148\n");
|
||||||
|
LogMessageVerb(X_WARNING, 0, "Proprietary drivers are inherently unstable, they just can't be done right.\n");
|
||||||
|
_xf86EnableGeneralHandler(handler);
|
||||||
|
}
|
||||||
|
|
||||||
|
void xf86DisableGeneralHandler(void *handler) {
|
||||||
|
LogMessageVerb(X_WARNING, 0, "Outdated driver still using xf86DisableGeneralHandler() !\n");
|
||||||
|
LogMessageVerb(X_WARNING, 0, "File a bug report to driver vendor or use a FOSS driver.\n");
|
||||||
|
LogMessageVerb(X_WARNING, 0, "https://forums.developer.nvidia.com/c/gpu-graphics/linux/148\n");
|
||||||
|
LogMessageVerb(X_WARNING, 0, "Proprietary drivers are inherently unstable, they just can't be done right.\n");
|
||||||
|
_xf86DisableGeneralHandler(handler);
|
||||||
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
xf86VTLeave(void)
|
xf86VTLeave(void)
|
||||||
|
@ -372,7 +395,7 @@ xf86VTLeave(void)
|
||||||
if (ih->is_input)
|
if (ih->is_input)
|
||||||
xf86DisableInputHandler(ih);
|
xf86DisableInputHandler(ih);
|
||||||
else
|
else
|
||||||
xf86DisableGeneralHandler(ih);
|
_xf86DisableGeneralHandler(ih);
|
||||||
}
|
}
|
||||||
for (pInfo = xf86InputDevs; pInfo; pInfo = pInfo->next)
|
for (pInfo = xf86InputDevs; pInfo; pInfo = pInfo->next)
|
||||||
xf86DisableInputDeviceForVTSwitch(pInfo);
|
xf86DisableInputDeviceForVTSwitch(pInfo);
|
||||||
|
@ -432,7 +455,7 @@ switch_failed:
|
||||||
if (ih->is_input)
|
if (ih->is_input)
|
||||||
xf86EnableInputHandler(ih);
|
xf86EnableInputHandler(ih);
|
||||||
else
|
else
|
||||||
xf86EnableGeneralHandler(ih);
|
_xf86EnableGeneralHandler(ih);
|
||||||
}
|
}
|
||||||
input_unlock();
|
input_unlock();
|
||||||
}
|
}
|
||||||
|
@ -480,7 +503,7 @@ xf86VTEnter(void)
|
||||||
if (ih->is_input)
|
if (ih->is_input)
|
||||||
xf86EnableInputHandler(ih);
|
xf86EnableInputHandler(ih);
|
||||||
else
|
else
|
||||||
xf86EnableGeneralHandler(ih);
|
_xf86EnableGeneralHandler(ih);
|
||||||
}
|
}
|
||||||
#ifdef XSERVER_PLATFORM_BUS
|
#ifdef XSERVER_PLATFORM_BUS
|
||||||
/* check for any new output devices */
|
/* check for any new output devices */
|
||||||
|
@ -638,7 +661,7 @@ static void xf86DisableInputHandler(void *handler)
|
||||||
RemoveNotifyFd(ih->fd);
|
RemoveNotifyFd(ih->fd);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void xf86DisableGeneralHandler(void *handler)
|
static void _xf86DisableGeneralHandler(void *handler)
|
||||||
{
|
{
|
||||||
IHPtr ih;
|
IHPtr ih;
|
||||||
|
|
||||||
|
@ -664,7 +687,7 @@ static void xf86EnableInputHandler(void *handler)
|
||||||
SetNotifyFd(ih->fd, xf86InputHandlerNotify, X_NOTIFY_READ, ih);
|
SetNotifyFd(ih->fd, xf86InputHandlerNotify, X_NOTIFY_READ, ih);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void xf86EnableGeneralHandler(void *handler)
|
static void _xf86EnableGeneralHandler(void *handler)
|
||||||
{
|
{
|
||||||
IHPtr ih;
|
IHPtr ih;
|
||||||
|
|
||||||
|
|
|
@ -24,6 +24,9 @@
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
#ifndef XSERVER_XFREE86_XF86VGAARBITERPRIV_H
|
||||||
|
#define XSERVER_XFREE86_XF86VGAARBITERPRIV_H
|
||||||
|
|
||||||
#ifdef HAVE_XORG_CONFIG_H
|
#ifdef HAVE_XORG_CONFIG_H
|
||||||
#include <xorg-config.h>
|
#include <xorg-config.h>
|
||||||
#endif
|
#endif
|
||||||
|
@ -273,3 +276,5 @@ static void VGAarbiterGlyphs(CARD8 op, PicturePtr pSrc, PicturePtr pDst,
|
||||||
static void VGAarbiterCompositeRects(CARD8 op, PicturePtr pDst,
|
static void VGAarbiterCompositeRects(CARD8 op, PicturePtr pDst,
|
||||||
xRenderColor * color, int nRect,
|
xRenderColor * color, int nRect,
|
||||||
xRectangle *rects);
|
xRectangle *rects);
|
||||||
|
|
||||||
|
#endif /* XSERVER_XFREE86_XF86VGAARBITERPRIV_H */
|
||||||
|
|
|
@ -33,7 +33,10 @@ extern char *xf86PointerName;
|
||||||
extern char *xf86KeyboardName;
|
extern char *xf86KeyboardName;
|
||||||
|
|
||||||
extern rgb xf86Weight;
|
extern rgb xf86Weight;
|
||||||
|
|
||||||
|
_X_EXPORT /* only for in-tree vgahw module, not supposed to be used by OOT modules */
|
||||||
extern Bool xf86FlipPixels;
|
extern Bool xf86FlipPixels;
|
||||||
|
|
||||||
extern Gamma xf86Gamma;
|
extern Gamma xf86Gamma;
|
||||||
|
|
||||||
extern const char *xf86ModulePath;
|
extern const char *xf86ModulePath;
|
||||||
|
@ -79,7 +82,9 @@ Bool xf86LoadModules(const char **list, void **optlist);
|
||||||
Bool xf86HasTTYs(void);
|
Bool xf86HasTTYs(void);
|
||||||
|
|
||||||
/* xf86Mode.c */
|
/* xf86Mode.c */
|
||||||
|
_X_EXPORT /* only for int10 module, not supposed to be used by OOT modules */
|
||||||
const char * xf86ModeStatusToString(ModeStatus status);
|
const char * xf86ModeStatusToString(ModeStatus status);
|
||||||
|
|
||||||
ModeStatus xf86CheckModeForDriver(ScrnInfoPtr scrp, DisplayModePtr mode, int flags);
|
ModeStatus xf86CheckModeForDriver(ScrnInfoPtr scrp, DisplayModePtr mode, int flags);
|
||||||
|
|
||||||
/* xf86DefaultModes (auto-generated) */
|
/* xf86DefaultModes (auto-generated) */
|
||||||
|
|
|
@ -1 +1,5 @@
|
||||||
special compat code for legacy drivers, namely Nvidia proprietary
|
special compat code for legacy drivers, namely Nvidia proprietary
|
||||||
|
|
||||||
|
NVidia is lacking behind for at least a year and don't actually clean up
|
||||||
|
their spaghetti code. That's why we need to keep several special compat
|
||||||
|
functions to emulate prehistoric behaviour.
|
||||||
|
|
|
@ -4,6 +4,8 @@
|
||||||
|
|
||||||
#include "dix/dix_priv.h"
|
#include "dix/dix_priv.h"
|
||||||
|
|
||||||
|
#include "xf86_compat.h"
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* this is specifically for NVidia proprietary driver: they're again lagging
|
* this is specifically for NVidia proprietary driver: they're again lagging
|
||||||
* behind a year, doing at least some minimal cleanup of their code base.
|
* behind a year, doing at least some minimal cleanup of their code base.
|
||||||
|
@ -13,12 +15,7 @@ _X_EXPORT void MarkClientException(ClientPtr pClient);
|
||||||
|
|
||||||
void MarkClientException(ClientPtr pClient)
|
void MarkClientException(ClientPtr pClient)
|
||||||
{
|
{
|
||||||
LogMessageVerb(X_WARNING, 0, "Bogus driver calling DIX-internal function MarkClientException() !\n");
|
xf86NVidiaBugInternalFunc("MarkClientException()");
|
||||||
LogMessageVerb(X_WARNING, 0, "External drivers really should never ever call this function.\n");
|
|
||||||
LogMessageVerb(X_WARNING, 0, "Nor should they ever DIX-internal fields like ClientRec->noClientException\n");
|
|
||||||
LogMessageVerb(X_WARNING, 0, "File a bug report to driver vendor or use a FOSS driver.\n");
|
|
||||||
LogMessageVerb(X_WARNING, 0, "Proprietary drivers are inherently unstable, they just can't be done right.\n");
|
|
||||||
LogMessageVerb(X_WARNING, 0, "And just don't buy Nvidia hardware, ever.\n");
|
|
||||||
|
|
||||||
dixMarkClientException(pClient);
|
dixMarkClientException(pClient);
|
||||||
}
|
}
|
||||||
|
|
|
@ -4,6 +4,8 @@
|
||||||
|
|
||||||
#include "include/os.h"
|
#include "include/os.h"
|
||||||
|
|
||||||
|
#include "xf86_compat.h"
|
||||||
|
|
||||||
#undef xf86Msg
|
#undef xf86Msg
|
||||||
#undef xf86MsgVerb
|
#undef xf86MsgVerb
|
||||||
|
|
||||||
|
@ -17,9 +19,7 @@ _X_EXPORT void xf86Msg(MessageType type, const char *format, ...)
|
||||||
|
|
||||||
void xf86Msg(MessageType type, const char *format, ...)
|
void xf86Msg(MessageType type, const char *format, ...)
|
||||||
{
|
{
|
||||||
LogMessageVerb(X_WARNING, 0, "Outdated driver still using xf86Msg() !\n");
|
xf86NVidiaBugInternalFunc("xf86Msg()");
|
||||||
LogMessageVerb(X_WARNING, 0, "File a bug report to driver vendor or use a FOSS driver.\n");
|
|
||||||
LogMessageVerb(X_WARNING, 0, "Proprietary drivers are inherently unstable, they just can't be done right.\n");
|
|
||||||
|
|
||||||
va_list ap;
|
va_list ap;
|
||||||
|
|
||||||
|
@ -39,9 +39,12 @@ _X_EXPORT void xf86MsgVerb(MessageType type, int verb, const char *format, ...)
|
||||||
void
|
void
|
||||||
xf86MsgVerb(MessageType type, int verb, const char *format, ...)
|
xf86MsgVerb(MessageType type, int verb, const char *format, ...)
|
||||||
{
|
{
|
||||||
LogMessageVerb(X_WARNING, 0, "Outdated driver still using xf86MsgVerb() !\n");
|
static char reportxf86MsgVerb = 1;
|
||||||
LogMessageVerb(X_WARNING, 0, "File a bug report to driver vendor or use a FOSS driver.\n");
|
|
||||||
LogMessageVerb(X_WARNING, 0, "Proprietary drivers are inherently unstable, they just can't be done right.\n");
|
if (reportxf86MsgVerb) {
|
||||||
|
xf86NVidiaBugInternalFunc("xf86MsgVerb()");
|
||||||
|
reportxf86MsgVerb = 0;
|
||||||
|
}
|
||||||
|
|
||||||
va_list ap;
|
va_list ap;
|
||||||
va_start(ap, format);
|
va_start(ap, format);
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
srcs_xorg_compat = [
|
srcs_xorg_compat = [
|
||||||
'clientexception.c',
|
'clientexception.c',
|
||||||
'log.c',
|
'log.c',
|
||||||
|
'nvidiabug.c',
|
||||||
'ones.c',
|
'ones.c',
|
||||||
'xf86Helper.c',
|
'xf86Helper.c',
|
||||||
]
|
]
|
||||||
|
|
|
@ -0,0 +1,31 @@
|
||||||
|
/* SPDX-License-Identifier: MIT OR X11
|
||||||
|
*
|
||||||
|
* Copyright © 2024 Enrico Weigelt, metux IT consult <info@metux.net>
|
||||||
|
*/
|
||||||
|
#include <dix-config.h>
|
||||||
|
|
||||||
|
#include "include/os.h"
|
||||||
|
|
||||||
|
#include "xf86_compat.h"
|
||||||
|
|
||||||
|
void xf86NVidiaBug(void)
|
||||||
|
{
|
||||||
|
LogMessageVerb(X_WARNING, 0, "[DRIVER BUG] file a bug report to driver vendor or use a free Xlibre driver.\n");
|
||||||
|
LogMessageVerb(X_WARNING, 0, "[DRIVER BUG] Proprietary drivers are inherently unstable, they just can't be done right.\n");
|
||||||
|
LogMessageVerb(X_WARNING, 0, "[DRIVER BUG] For NVidia report here: https://forums.developer.nvidia.com/c/gpu-graphics/linux/148\n");
|
||||||
|
LogMessageVerb(X_WARNING, 0, "[DRIVER BUG] And better don't buy NVidia HW until they've fixed their mess.\n");
|
||||||
|
}
|
||||||
|
|
||||||
|
void xf86NVidiaBugInternalFunc(const char* name)
|
||||||
|
{
|
||||||
|
LogMessageVerb(X_WARNING, 0, "[DRIVER BUG] calling internal function: %s\n", name);
|
||||||
|
LogMessageVerb(X_WARNING, 0, "[DRIVER BUG] this function is not supposed to be by drivers ever\n");
|
||||||
|
xf86NVidiaBug();
|
||||||
|
}
|
||||||
|
|
||||||
|
void xf86NVidiaBugObsoleteFunc(const char* name)
|
||||||
|
{
|
||||||
|
LogMessageVerb(X_WARNING, 0, "[DRIVER BUG] calling obsolete function: %s\n", name);
|
||||||
|
LogMessageVerb(X_WARNING, 0, "[DRIVER BUG] this function is not supposed to be by drivers ever\n");
|
||||||
|
xf86NVidiaBug();
|
||||||
|
}
|
|
@ -27,7 +27,6 @@ Ones(unsigned long mask)
|
||||||
|
|
||||||
y = (mask >> 1) & 033333333333;
|
y = (mask >> 1) & 033333333333;
|
||||||
y = mask - y - ((y >> 1) & 033333333333);
|
y = mask - y - ((y >> 1) & 033333333333);
|
||||||
/* x & 077 == x % 077 */
|
return (((y + (y >> 3)) & 030707070707) % 077);
|
||||||
return (((y + (y >> 3)) & 030707070707) & 077);
|
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,12 @@
|
||||||
|
/* SPDX-License-Identifier: MIT OR X11
|
||||||
|
*
|
||||||
|
* Copyright © 2024 Enrico Weigelt, metux IT consult <info@metux.net>
|
||||||
|
*/
|
||||||
|
#ifndef __XFREE86_COMPAT_XF86_COMPAT_H
|
||||||
|
#define __XFREE86_COMPAT_XF86_COMPAT_H
|
||||||
|
|
||||||
|
void xf86NVidiaBug(void);
|
||||||
|
void xf86NVidiaBugInternalFunc(const char* name);
|
||||||
|
void xf86NVidiaBugObsoleteFunc(const char* name);
|
||||||
|
|
||||||
|
#endif /* __XFREE86_COMPAT_XF86_COMPAT_H */
|
|
@ -23,4 +23,9 @@
|
||||||
* Author: Daniel Stone <daniel@fooishbar.org>
|
* Author: Daniel Stone <daniel@fooishbar.org>
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
#ifndef XSERVER_XFREE86_DRI2INT_H
|
||||||
|
#define XSERVER_XFREE86_DRI2INT_H
|
||||||
|
|
||||||
extern Bool DRI2ModuleSetup(void);
|
extern Bool DRI2ModuleSetup(void);
|
||||||
|
|
||||||
|
#endif /* XSERVER_XFREE86_DRI2INT_H */
|
||||||
|
|
|
@ -1306,7 +1306,7 @@ PreInit(ScrnInfoPtr pScrn, int flags)
|
||||||
ms->atomic_modeset_capable = (ret == 0);
|
ms->atomic_modeset_capable = (ret == 0);
|
||||||
|
|
||||||
if (xf86ReturnOptValBool(ms->drmmode.Options, OPTION_ATOMIC, FALSE)) {
|
if (xf86ReturnOptValBool(ms->drmmode.Options, OPTION_ATOMIC, FALSE)) {
|
||||||
ret = drmSetClientCap(ms->fd, DRM_CLIENT_CAP_ATOMIC, 1);
|
ret = drmSetClientCap(ms->fd, DRM_CLIENT_CAP_ATOMIC, 2);
|
||||||
ms->atomic_modeset = (ret == 0);
|
ms->atomic_modeset = (ret == 0);
|
||||||
if (!ms->atomic_modeset)
|
if (!ms->atomic_modeset)
|
||||||
xf86DrvMsg(pScrn->scrnIndex, X_WARNING, "Atomic modesetting not supported\n");
|
xf86DrvMsg(pScrn->scrnIndex, X_WARNING, "Atomic modesetting not supported\n");
|
||||||
|
@ -1631,7 +1631,7 @@ msStopFlippingPixmapTracking(DrawablePtr src,
|
||||||
}
|
}
|
||||||
|
|
||||||
static Bool
|
static Bool
|
||||||
modsetCreateScreenResources(ScreenPtr pScreen)
|
modesetCreateScreenResources(ScreenPtr pScreen)
|
||||||
{
|
{
|
||||||
ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen);
|
ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen);
|
||||||
modesettingPtr ms = modesettingPTR(pScrn);
|
modesettingPtr ms = modesettingPTR(pScrn);
|
||||||
|
@ -1941,7 +1941,7 @@ ScreenInit(ScreenPtr pScreen, int argc, char **argv)
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
pScreen->CreateScreenResources = modsetCreateScreenResources;
|
pScreen->CreateScreenResources = modesetCreateScreenResources;
|
||||||
|
|
||||||
xf86SetBlackWhitePixels(pScreen);
|
xf86SetBlackWhitePixels(pScreen);
|
||||||
|
|
||||||
|
|
|
@ -29,6 +29,9 @@
|
||||||
* Aaron Plattner <aplattner@nvidia.com>
|
* Aaron Plattner <aplattner@nvidia.com>
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
#ifndef XSERVER_XFREE86_DRIVER_H
|
||||||
|
#define XSERVER_XFREE86_DRIVER_H
|
||||||
|
|
||||||
#include <errno.h>
|
#include <errno.h>
|
||||||
#include <drm.h>
|
#include <drm.h>
|
||||||
#include <xf86drm.h>
|
#include <xf86drm.h>
|
||||||
|
@ -261,3 +264,5 @@ void ms_drain_drm_events(ScreenPtr screen);
|
||||||
Bool ms_window_has_variable_refresh(modesettingPtr ms, WindowPtr win);
|
Bool ms_window_has_variable_refresh(modesettingPtr ms, WindowPtr win);
|
||||||
void ms_present_set_screen_vrr(ScrnInfoPtr scrn, Bool vrr_enabled);
|
void ms_present_set_screen_vrr(ScrnInfoPtr scrn, Bool vrr_enabled);
|
||||||
Bool ms_tearfree_is_active_on_crtc(xf86CrtcPtr crtc);
|
Bool ms_tearfree_is_active_on_crtc(xf86CrtcPtr crtc);
|
||||||
|
|
||||||
|
#endif /* XSERVER_XFREE86_DRIVER_H */
|
||||||
|
|
|
@ -29,6 +29,7 @@
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef _VBE_MODES_H
|
#ifndef _VBE_MODES_H
|
||||||
|
#define _VBE_MODES_H
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* This is intended to be stored in the DisplayModeRec's private area.
|
* This is intended to be stored in the DisplayModeRec's private area.
|
||||||
|
|
|
@ -417,7 +417,6 @@ CheckVersion(const char *module, XF86ModuleVersionInfo * data,
|
||||||
{
|
{
|
||||||
int vercode[4];
|
int vercode[4];
|
||||||
long ver = data->xf86version;
|
long ver = data->xf86version;
|
||||||
MessageType errtype;
|
|
||||||
|
|
||||||
LogMessage(X_INFO, "Module %s: vendor=\"%s\"\n",
|
LogMessage(X_INFO, "Module %s: vendor=\"%s\"\n",
|
||||||
data->modname ? data->modname : "UNKNOWN!",
|
data->modname ? data->modname : "UNKNOWN!",
|
||||||
|
@ -458,6 +457,7 @@ CheckVersion(const char *module, XF86ModuleVersionInfo * data,
|
||||||
vermaj = GET_ABI_MAJOR(ver);
|
vermaj = GET_ABI_MAJOR(ver);
|
||||||
vermin = GET_ABI_MINOR(ver);
|
vermin = GET_ABI_MINOR(ver);
|
||||||
if (abimaj != vermaj) {
|
if (abimaj != vermaj) {
|
||||||
|
MessageType errtype;
|
||||||
if (LoaderOptions & LDR_OPT_ABI_MISMATCH_NONFATAL)
|
if (LoaderOptions & LDR_OPT_ABI_MISMATCH_NONFATAL)
|
||||||
errtype = X_WARNING;
|
errtype = X_WARNING;
|
||||||
else
|
else
|
||||||
|
@ -469,6 +469,7 @@ CheckVersion(const char *module, XF86ModuleVersionInfo * data,
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
else if (abimin > vermin) {
|
else if (abimin > vermin) {
|
||||||
|
MessageType errtype;
|
||||||
if (LoaderOptions & LDR_OPT_ABI_MISMATCH_NONFATAL)
|
if (LoaderOptions & LDR_OPT_ABI_MISMATCH_NONFATAL)
|
||||||
errtype = X_WARNING;
|
errtype = X_WARNING;
|
||||||
else
|
else
|
||||||
|
|
|
@ -656,11 +656,7 @@ Orest Zborowski \fIorestz@eskimo.com\fP
|
||||||
.fi
|
.fi
|
||||||
.RE
|
.RE
|
||||||
.PP
|
.PP
|
||||||
Xorg source is available from the FTP server
|
Xlibre source is available via git \fI<https://github.com/X11Libre/xserver.git/>\fP.
|
||||||
\fI<ftp://ftp.x.org/>\fP, and from the X.Org
|
|
||||||
server \fI<https://gitlab.freedesktop.org/xorg/>\fP. Documentation and other
|
|
||||||
information can be found from the X.Org web site
|
|
||||||
\fI<https://www.x.org/>\fP.
|
|
||||||
|
|
||||||
.SH LEGAL
|
.SH LEGAL
|
||||||
.B Xorg
|
.B Xorg
|
||||||
|
|
|
@ -29,6 +29,9 @@
|
||||||
|
|
||||||
/* exported functions are/were used by the X Server */
|
/* exported functions are/were used by the X Server */
|
||||||
|
|
||||||
|
#ifndef XSERVER_XFREE86_CONFIGPROCS_H
|
||||||
|
#define XSERVER_XFREE86_CONFIGPROCS_H
|
||||||
|
|
||||||
#include <X11/Xfuncproto.h>
|
#include <X11/Xfuncproto.h>
|
||||||
|
|
||||||
/* Device.c */
|
/* Device.c */
|
||||||
|
@ -146,3 +149,5 @@ xf86freeExtensions(XF86ConfExtensionsPtr ptr);
|
||||||
void
|
void
|
||||||
ErrorF(const char *f, ...);
|
ErrorF(const char *f, ...);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#endif /* XSERVER_XFREE86_CONFIGPROCS_H */
|
||||||
|
|
|
@ -154,13 +154,6 @@ ddxGiveUp(enum ExitCode error)
|
||||||
xnestCloseDisplay();
|
xnestCloseDisplay();
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef __APPLE__
|
|
||||||
void
|
|
||||||
DarwinHandleGUI(int argc, char *argv[])
|
|
||||||
{
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
void
|
void
|
||||||
OsVendorInit(void)
|
OsVendorInit(void)
|
||||||
{
|
{
|
||||||
|
|
|
@ -164,7 +164,7 @@ Bool
|
||||||
xnestOpenScreen(ScreenPtr pScreen, int argc, char *argv[])
|
xnestOpenScreen(ScreenPtr pScreen, int argc, char *argv[])
|
||||||
{
|
{
|
||||||
unsigned long valuemask;
|
unsigned long valuemask;
|
||||||
VisualID defaultVisual;
|
VisualID defaultVisual = 0;
|
||||||
int rootDepth;
|
int rootDepth;
|
||||||
miPointerScreenPtr PointPriv;
|
miPointerScreenPtr PointPriv;
|
||||||
|
|
||||||
|
|
|
@ -6,6 +6,9 @@
|
||||||
// Copyright (c) 2021 Apple Inc. All rights reserved.
|
// Copyright (c) 2021 Apple Inc. All rights reserved.
|
||||||
//
|
//
|
||||||
|
|
||||||
|
#ifndef XSERVER_XQUARTZ_NSUSERDEFAULTS_XQUARTZDEFAULTS_H
|
||||||
|
#define XSERVER_XQUARTZ_NSUSERDEFAULTS_XQUARTZDEFAULTS_H
|
||||||
|
|
||||||
#import <Foundation/Foundation.h>
|
#import <Foundation/Foundation.h>
|
||||||
|
|
||||||
extern NSString * const XQuartzPrefKeyAppsMenu;
|
extern NSString * const XQuartzPrefKeyAppsMenu;
|
||||||
|
@ -47,3 +50,5 @@ extern NSString * const XQuartzPrefKeySyncPrimaryOnSelect;
|
||||||
+ (NSUserDefaults *)xquartzDefaults;
|
+ (NSUserDefaults *)xquartzDefaults;
|
||||||
|
|
||||||
@end
|
@end
|
||||||
|
|
||||||
|
#endif /* XSERVER_XQUARTZ_NSUSERDEFAULTS_XQUARTZDEFAULTS_H */
|
||||||
|
|
|
@ -690,7 +690,6 @@ SNotifyEvent(xAppleWMNotifyEvent *from, xAppleWMNotifyEvent *to)
|
||||||
static int
|
static int
|
||||||
SProcAppleWMQueryVersion(register ClientPtr client)
|
SProcAppleWMQueryVersion(register ClientPtr client)
|
||||||
{
|
{
|
||||||
REQUEST(xAppleWMQueryVersionReq);
|
|
||||||
return ProcAppleWMQueryVersion(client);
|
return ProcAppleWMQueryVersion(client);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -38,6 +38,7 @@
|
||||||
#include "os/ddx_priv.h"
|
#include "os/ddx_priv.h"
|
||||||
#include "os/log_priv.h"
|
#include "os/log_priv.h"
|
||||||
#include "os/osdep.h"
|
#include "os/osdep.h"
|
||||||
|
#include "xkb/xkbsrv_priv.h"
|
||||||
|
|
||||||
#include "os.h"
|
#include "os.h"
|
||||||
#include "servermd.h"
|
#include "servermd.h"
|
||||||
|
|
|
@ -50,7 +50,7 @@
|
||||||
* needs and simply execs the startup script which then execs the main binary.
|
* needs and simply execs the startup script which then execs the main binary.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
static char *executable_path() {
|
static char *executable_path(void) {
|
||||||
uint32_t bufsize = PATH_MAX;
|
uint32_t bufsize = PATH_MAX;
|
||||||
char *buf = calloc(1, bufsize);
|
char *buf = calloc(1, bufsize);
|
||||||
|
|
||||||
|
|
|
@ -62,7 +62,7 @@ x11_bin = executable('X11.bin',
|
||||||
mach_startup[3], # mach_startupUser.c
|
mach_startup[3], # mach_startupUser.c
|
||||||
],
|
],
|
||||||
link_with: x11_bin_libs,
|
link_with: x11_bin_libs,
|
||||||
dependencies: [xproto_dep, x11_bin_deps, mach_startup_dep],
|
dependencies: [xproto_dep, x11_dep, x11_bin_deps, mach_startup_dep],
|
||||||
include_directories: [inc, '..', top_dir_inc],
|
include_directories: [inc, '..', top_dir_inc],
|
||||||
c_args: xquartz_defs,
|
c_args: xquartz_defs,
|
||||||
link_args: ['-Objc'],
|
link_args: ['-Objc'],
|
||||||
|
|
|
@ -76,7 +76,7 @@ libXquartz = static_library('Xquartz',
|
||||||
c_args: libxquartz_defs,
|
c_args: libxquartz_defs,
|
||||||
objc_args: libxquartz_defs,
|
objc_args: libxquartz_defs,
|
||||||
include_directories: [inc, '../../pseudoramiX', '../../miext/rootless', top_dir_inc],
|
include_directories: [inc, '../../pseudoramiX', '../../miext/rootless', top_dir_inc],
|
||||||
dependencies: [xproto_dep, pixman_dep],
|
dependencies: [xproto_dep, xdmcp_dep, pixman_dep],
|
||||||
link_with: [libxserver_pseudoramix, libxserver_miext_rootless],
|
link_with: [libxserver_pseudoramix, libxserver_miext_rootless],
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
|
@ -33,6 +33,8 @@
|
||||||
|
|
||||||
#include <dix-config.h>
|
#include <dix-config.h>
|
||||||
|
|
||||||
|
#include "dix/dix_priv.h"
|
||||||
|
|
||||||
#include "quartzRandR.h"
|
#include "quartzRandR.h"
|
||||||
#include "inputstr.h"
|
#include "inputstr.h"
|
||||||
#include "quartz.h"
|
#include "quartz.h"
|
||||||
|
|
|
@ -394,7 +394,6 @@ SNotifyEvent(xAppleDRINotifyEvent *from,
|
||||||
static int
|
static int
|
||||||
SProcAppleDRIQueryVersion(register ClientPtr client)
|
SProcAppleDRIQueryVersion(register ClientPtr client)
|
||||||
{
|
{
|
||||||
REQUEST(xAppleDRIQueryVersionReq);
|
|
||||||
return ProcAppleDRIQueryVersion(client);
|
return ProcAppleDRIQueryVersion(client);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -28,6 +28,8 @@
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef DRIWRAP_H
|
#ifndef DRIWRAP_H
|
||||||
|
#define DRIWRAP_H
|
||||||
|
|
||||||
#include "scrnintstr.h"
|
#include "scrnintstr.h"
|
||||||
|
|
||||||
Bool
|
Bool
|
||||||
|
|
|
@ -4,9 +4,14 @@
|
||||||
* Authors: Alexander Gottwald
|
* Authors: Alexander Gottwald
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
#ifndef XSERVER_XWIN_WINPRIV_H
|
||||||
|
#define XSERVER_XWIN_WINPRIV_H
|
||||||
|
|
||||||
#include <X11/Xwindows.h>
|
#include <X11/Xwindows.h>
|
||||||
#include <windowstr.h>
|
#include <windowstr.h>
|
||||||
|
|
||||||
HWND winGetWindowInfo(WindowPtr pWin);
|
HWND winGetWindowInfo(WindowPtr pWin);
|
||||||
Bool winCheckScreenAiglxIsSupported(ScreenPtr pScreen);
|
Bool winCheckScreenAiglxIsSupported(ScreenPtr pScreen);
|
||||||
void winSetScreenAiglxIsActive(ScreenPtr pScreen);
|
void winSetScreenAiglxIsActive(ScreenPtr pScreen);
|
||||||
|
|
||||||
|
#endif /* XSERVER_XWIN_WINPRIV_H */
|
||||||
|
|
|
@ -19,8 +19,13 @@
|
||||||
* IN THE SOFTWARE.
|
* IN THE SOFTWARE.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
#ifndef XSERVER_XWIN_WINAUTH_H
|
||||||
|
#define XSERVER_XWIN_WINAUTH_H
|
||||||
|
|
||||||
#include <xcb/xcb.h>
|
#include <xcb/xcb.h>
|
||||||
#include <X11/Xmd.h> // for BOOL
|
#include <X11/Xmd.h> // for BOOL
|
||||||
|
|
||||||
BOOL winGenerateAuthorization(void);
|
BOOL winGenerateAuthorization(void);
|
||||||
xcb_auth_info_t * winGetXcbAuthInfo(void);
|
xcb_auth_info_t * winGetXcbAuthInfo(void);
|
||||||
|
|
||||||
|
#endif /* XSERVER_XWIN_WINAUTH_H */
|
||||||
|
|
|
@ -27,6 +27,9 @@
|
||||||
* XKB settings.
|
* XKB settings.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
#ifndef XSERVER_XWIN_WINLAYOUTS_H
|
||||||
|
#define XSERVER_XWIN_WINLAYOUTS_H
|
||||||
|
|
||||||
typedef struct {
|
typedef struct {
|
||||||
unsigned int winlayout;
|
unsigned int winlayout;
|
||||||
int winkbtype;
|
int winkbtype;
|
||||||
|
@ -98,3 +101,5 @@ WinKBLayoutRec winKBLayouts[] = {
|
||||||
See http://technet.microsoft.com/en-us/library/cc766503%28WS.10%29.aspx
|
See http://technet.microsoft.com/en-us/library/cc766503%28WS.10%29.aspx
|
||||||
for a listing of input locale (keyboard layout) codes
|
for a listing of input locale (keyboard layout) codes
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
#endif /* XSERVER_XWIN_WINLAYOUTS_H */
|
||||||
|
|
|
@ -27,6 +27,9 @@ from The Open Group.
|
||||||
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
#ifndef XSERVER_XWIN_WINMONITORS_H
|
||||||
|
#define XSERVER_XWIN_WINMONITORS_H
|
||||||
|
|
||||||
/* data returned for monitor information */
|
/* data returned for monitor information */
|
||||||
struct GetMonitorInfoData {
|
struct GetMonitorInfoData {
|
||||||
int requestedMonitor;
|
int requestedMonitor;
|
||||||
|
@ -41,3 +44,5 @@ struct GetMonitorInfoData {
|
||||||
};
|
};
|
||||||
|
|
||||||
Bool QueryMonitor(int i, struct GetMonitorInfoData *data);
|
Bool QueryMonitor(int i, struct GetMonitorInfoData *data);
|
||||||
|
|
||||||
|
#endif /* XSERVER_XWIN_WINMONITORS_H */
|
||||||
|
|
|
@ -1,8 +1,13 @@
|
||||||
/* Do not include this file directly. It is included at the end of <dix-config.h> */
|
/* Do not include this file directly. It is included at the end of <dix-config.h> */
|
||||||
|
|
||||||
|
#ifndef XSERVER_CONFIG_APPLE_VERBATIM_H
|
||||||
|
#define XSERVER_CONFIG_APPLE_VERBATIM_H
|
||||||
|
|
||||||
/* Correctly set _XSERVER64 for OSX fat binaries */
|
/* Correctly set _XSERVER64 for OSX fat binaries */
|
||||||
#if defined(__LP64__) && !defined(_XSERVER64)
|
#if defined(__LP64__) && !defined(_XSERVER64)
|
||||||
#define _XSERVER64 1
|
#define _XSERVER64 1
|
||||||
#elif !defined(__LP64__) && defined(_XSERVER64)
|
#elif !defined(__LP64__) && defined(_XSERVER64)
|
||||||
#undef _XSERVER64
|
#undef _XSERVER64
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#endif /* XSERVER_CONFIG_APPLE_VERBATIM_H */
|
||||||
|
|
|
@ -204,6 +204,9 @@ conf_data.set('TCPCONN', '1')
|
||||||
conf_data.set('UNIXCONN', host_machine.system() != 'windows' ? '1' : false)
|
conf_data.set('UNIXCONN', host_machine.system() != 'windows' ? '1' : false)
|
||||||
conf_data.set('IPv6', build_ipv6 ? '1' : false)
|
conf_data.set('IPv6', build_ipv6 ? '1' : false)
|
||||||
|
|
||||||
|
# some drivers (eg. xf86-video-intel) still relying on this symbol being set
|
||||||
|
conf_data.set('COMPOSITE', '1')
|
||||||
|
|
||||||
conf_data.set('DAMAGE', '1')
|
conf_data.set('DAMAGE', '1')
|
||||||
conf_data.set('DBE', '1')
|
conf_data.set('DBE', '1')
|
||||||
conf_data.set('DGA', build_dga ? '1' : false)
|
conf_data.set('DGA', build_dga ? '1' : false)
|
||||||
|
|
|
@ -696,6 +696,10 @@ typedef struct _Screen {
|
||||||
CallbackListPtr hookPostCreateResources;
|
CallbackListPtr hookPostCreateResources;
|
||||||
|
|
||||||
SetWindowVRRModeProcPtr SetWindowVRRMode;
|
SetWindowVRRModeProcPtr SetWindowVRRMode;
|
||||||
|
|
||||||
|
/* additional screen post-close notify hooks (replaces wrapping CloseScreen)
|
||||||
|
should NOT be touched outside of DIX core */
|
||||||
|
CallbackListPtr hookPostClose;
|
||||||
} ScreenRec;
|
} ScreenRec;
|
||||||
|
|
||||||
static inline RegionPtr
|
static inline RegionPtr
|
||||||
|
|
|
@ -23,6 +23,9 @@
|
||||||
/* Default font path */
|
/* Default font path */
|
||||||
#mesondefine COMPILEDDEFAULTFONTPATH
|
#mesondefine COMPILEDDEFAULTFONTPATH
|
||||||
|
|
||||||
|
/* Support Composite Extension */
|
||||||
|
#mesondefine COMPOSITE
|
||||||
|
|
||||||
/* Build DPMS extension */
|
/* Build DPMS extension */
|
||||||
#mesondefine DPMSExtension
|
#mesondefine DPMSExtension
|
||||||
|
|
||||||
|
|
|
@ -4,6 +4,10 @@
|
||||||
* This file has all defines used in the xwin ddx
|
* This file has all defines used in the xwin ddx
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
#ifndef XSERVER_XWIN_CONFIG_H
|
||||||
|
#define XSERVER_XWIN_CONFIG_H
|
||||||
|
|
||||||
#include <dix-config.h>
|
#include <dix-config.h>
|
||||||
|
|
||||||
/* Winsock networking */
|
/* Winsock networking */
|
||||||
|
@ -17,3 +21,5 @@
|
||||||
|
|
||||||
/* Whether we should re-locate the root to where the executable lives */
|
/* Whether we should re-locate the root to where the executable lives */
|
||||||
#mesondefine RELOCATE_PROJECTROOT
|
#mesondefine RELOCATE_PROJECTROOT
|
||||||
|
|
||||||
|
#endif /* XSERVER_XWIN_CONFIG_H */
|
||||||
|
|
|
@ -3,10 +3,10 @@ project('xserver', 'c',
|
||||||
'buildtype=debugoptimized',
|
'buildtype=debugoptimized',
|
||||||
'c_std=gnu99',
|
'c_std=gnu99',
|
||||||
],
|
],
|
||||||
version: '21.1.99.1',
|
version: '25.0.0.4',
|
||||||
meson_version: '>= 0.58.0',
|
meson_version: '>= 0.58.0',
|
||||||
)
|
)
|
||||||
release_date = '2021-07-05'
|
release_date = '2025-07-04'
|
||||||
|
|
||||||
add_project_arguments('-DHAVE_DIX_CONFIG_H', language: ['c', 'objc'])
|
add_project_arguments('-DHAVE_DIX_CONFIG_H', language: ['c', 'objc'])
|
||||||
cc = meson.get_compiler('c')
|
cc = meson.get_compiler('c')
|
||||||
|
@ -777,7 +777,8 @@ endif
|
||||||
|
|
||||||
subdir('hw')
|
subdir('hw')
|
||||||
|
|
||||||
if host_machine.system() != 'windows'
|
build_tests = get_option('tests') and host_machine.system() != 'windows'
|
||||||
|
if build_tests
|
||||||
subdir('test')
|
subdir('test')
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
|
|
@ -14,7 +14,7 @@ option('xquartz', type: 'combo', choices: ['true', 'false', 'auto'], value: 'aut
|
||||||
description: 'Enable Xquartz X server')
|
description: 'Enable Xquartz X server')
|
||||||
|
|
||||||
|
|
||||||
option('builder_addr', type: 'string', description: 'Builder address', value: 'xorg@lists.freedesktop.org')
|
option('builder_addr', type: 'string', description: 'Builder address', value: 'xlibre@freelists.org')
|
||||||
option('builder_string', type: 'string', description: 'Additional builder string')
|
option('builder_string', type: 'string', description: 'Additional builder string')
|
||||||
|
|
||||||
option('log_dir', type: 'string')
|
option('log_dir', type: 'string')
|
||||||
|
@ -110,6 +110,8 @@ option('sha1', type: 'combo', choices: ['libc', 'CommonCrypto', 'CryptoAPI', 'li
|
||||||
description: 'SHA1 implementation')
|
description: 'SHA1 implementation')
|
||||||
option('xf86-input-inputtest', type: 'boolean', value: true,
|
option('xf86-input-inputtest', type: 'boolean', value: true,
|
||||||
description: 'Test input driver support on Xorg')
|
description: 'Test input driver support on Xorg')
|
||||||
|
option('tests', type: 'boolean', value: true,
|
||||||
|
description: 'Build tests for the X server on platforms that support it')
|
||||||
|
|
||||||
option('dri1', type: 'combo', choices: ['true', 'false', 'auto'], value: 'auto', description: 'Build DRI1 extension (default: auto)')
|
option('dri1', type: 'combo', choices: ['true', 'false', 'auto'], value: 'auto', description: 'Build DRI1 extension (default: auto)')
|
||||||
option('dri2', type: 'combo', choices: ['true', 'false', 'auto'], value: 'auto', description: 'Build DRI2 extension (default: auto)')
|
option('dri2', type: 'combo', choices: ['true', 'false', 'auto'], value: 'auto', description: 'Build DRI2 extension (default: auto)')
|
||||||
|
|
|
@ -40,7 +40,7 @@ hdrs_mi = [
|
||||||
'mizerarc.h',
|
'mizerarc.h',
|
||||||
]
|
]
|
||||||
|
|
||||||
libxserver_mi = static_library('libxserver_mi',
|
libxserver_mi = static_library('xserver_mi',
|
||||||
srcs_mi,
|
srcs_mi,
|
||||||
include_directories: inc,
|
include_directories: inc,
|
||||||
dependencies: [
|
dependencies: [
|
||||||
|
|
|
@ -1,4 +1,3 @@
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
||||||
Copyright 1994, 1998 The Open Group
|
Copyright 1994, 1998 The Open Group
|
||||||
|
@ -26,6 +25,7 @@ in this Software without prior written authorization from The Open Group.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef MILINE_H
|
#ifndef MILINE_H
|
||||||
|
#define MILINE_H
|
||||||
|
|
||||||
#include "screenint.h"
|
#include "screenint.h"
|
||||||
#include "privates.h"
|
#include "privates.h"
|
||||||
|
|
|
@ -141,7 +141,7 @@ miPointerInitialize(ScreenPtr pScreen,
|
||||||
pScreenPriv->screenFuncs = screenFuncs;
|
pScreenPriv->screenFuncs = screenFuncs;
|
||||||
pScreenPriv->waitForUpdate = waitForUpdate;
|
pScreenPriv->waitForUpdate = waitForUpdate;
|
||||||
pScreenPriv->showTransparent = FALSE;
|
pScreenPriv->showTransparent = FALSE;
|
||||||
dixScreenHookClose(pScreen, miPointerCloseScreen);
|
dixScreenHookPostClose(pScreen, miPointerCloseScreen);
|
||||||
dixSetPrivate(&pScreen->devPrivates, miPointerScreenKey, pScreenPriv);
|
dixSetPrivate(&pScreen->devPrivates, miPointerScreenKey, pScreenPriv);
|
||||||
/*
|
/*
|
||||||
* set up screen cursor method table
|
* set up screen cursor method table
|
||||||
|
@ -169,7 +169,7 @@ static void miPointerCloseScreen(CallbackListPtr *pcbl, ScreenPtr pScreen, void
|
||||||
{
|
{
|
||||||
SetupScreen(pScreen);
|
SetupScreen(pScreen);
|
||||||
|
|
||||||
dixScreenUnhookClose(pScreen, miPointerCloseScreen);
|
dixScreenUnhookPostClose(pScreen, miPointerCloseScreen);
|
||||||
free((void *) pScreenPriv);
|
free((void *) pScreenPriv);
|
||||||
dixSetPrivate(&pScreen->devPrivates, miPointerScreenKey, NULL);
|
dixSetPrivate(&pScreen->devPrivates, miPointerScreenKey, NULL);
|
||||||
FreeEventList(mipointermove_events, GetMaximumEventsNum());
|
FreeEventList(mipointermove_events, GetMaximumEventsNum());
|
||||||
|
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue