mirror of
https://github.com/Ed94/raddebugger.git
synced 2026-11-14 02:03:27 -08:00
linux_window_manager: query default refresh rate via xrandr, rather than assuming 60 (oops!)
This commit is contained in:
1 parent
a256e5c48a
commit
56073cfff0
5 files changed
+40
-8
No files matched your search
@@ -40,7 +40,7 @@ jobs:
|
||||
shell: bash
|
||||
run: |
|
||||
sudo apt-get update
|
||||
sudo apt-get install --no-install-recommends -y pkg-config libfreetype6-dev libx11-dev libxext-dev libxfixes-dev libgl1-mesa-dev libegl1-mesa-dev
|
||||
sudo apt-get install --no-install-recommends -y pkg-config libfreetype6-dev libx11-dev libxext-dev libxfixes-dev libxrandr-dev libgl1-mesa-dev libegl1-mesa-dev
|
||||
|
||||
- name: Install clang-17 Dependencies
|
||||
if: ${{ matrix.compiler == 'clang-17' }}
|
||||
@@ -162,7 +162,7 @@ jobs:
|
||||
wget -O - https://apt.llvm.org/llvm-snapshot.gpg.key | sudo apt-key add -
|
||||
sudo apt-add-repository -y "deb http://apt.llvm.org/noble/ llvm-toolchain-noble-22 main"
|
||||
sudo apt-get update
|
||||
sudo apt-get install -y clang-22 lld-22 llvm-22 gcc-14 pkg-config libfreetype6-dev libx11-dev libxext-dev libxfixes-dev libgl1-mesa-dev libegl1-mesa-dev
|
||||
sudo apt-get install -y clang-22 lld-22 llvm-22 gcc-14 pkg-config libfreetype6-dev libx11-dev libxext-dev libxfixes-dev libxrandr-dev libgl1-mesa-dev libegl1-mesa-dev
|
||||
# crash callstack symbolizer depends on LLVM
|
||||
sudo ln -s /usr/bin/llvm-symbolizer-22 /usr/bin/llvm-symbolizer
|
||||
- name: Run
|
||||
|
||||
@@ -247,6 +247,7 @@ on the system:
|
||||
- `libx11`
|
||||
- `libxext`
|
||||
- `libxfixes`
|
||||
- `libxrandr`
|
||||
- `libgl`
|
||||
- `libegl`
|
||||
|
||||
@@ -256,13 +257,13 @@ installed using one of the following commands, depending on your distribution:
|
||||
#### Ubuntu / Debian / Mint
|
||||
|
||||
```
|
||||
sudo apt install -y libfreetype6-dev libx11-dev libxext-dev libxfixes-dev libgl-dev libegl-dev
|
||||
sudo apt install -y libfreetype6-dev libx11-dev libxext-dev libxfixes-dev libxrandr-dev libgl-dev libegl-dev
|
||||
```
|
||||
|
||||
#### Arch / Manjaro
|
||||
|
||||
```
|
||||
sudo pacman -S --needed freetype2 libx11 libxext libxfixes libglvnd
|
||||
sudo pacman -S --needed freetype2 libx11 libxext libxfixes libxrandr libglvnd
|
||||
```
|
||||
|
||||
### 3. Building
|
||||
|
||||
@@ -29,14 +29,14 @@ cc_link="-lpthread -lm -lrt -ldl"
|
||||
cc_link_dll="-fPIC"
|
||||
|
||||
# --- External Libraries ------------------------------------------------------
|
||||
# sudo apt install -y pkg-config libfreetype6-dev libx11-dev libxext-dev libxfixes-dev libgl-dev libegl-dev
|
||||
# sudo apt install -y pkg-config libfreetype6-dev libx11-dev libxext-dev libxfixes-dev libxrandr-dev libgl-dev libegl-dev
|
||||
if [[ -x "$(command -v pkg-config)" ]]; then
|
||||
cc_font_provider="$(pkg-config --cflags --libs freetype2)"
|
||||
cc_os_gfx="$(pkg-config --cflags --libs x11 xext xfixes)"
|
||||
cc_os_gfx="$(pkg-config --cflags --libs x11 xext xfixes xrandr)"
|
||||
cc_render="$(pkg-config --cflags --libs gl egl)"
|
||||
else
|
||||
cc_font_provider="-I/usr/include/freetype2 -lfreetype"
|
||||
cc_os_gfx="-lX11 -lXext -lXfixes"
|
||||
cc_os_gfx="-lX11 -lXext -lXfixes -lXrandr"
|
||||
cc_render="-lGL -lEGL"
|
||||
fi
|
||||
|
||||
|
||||
@@ -374,11 +374,41 @@ wm_init(void)
|
||||
//- rjf: open im
|
||||
lnx_wm_state->xim = XOpenIM(lnx_wm_state->display, 0, 0, 0);
|
||||
|
||||
//- rjf: fill out gfx info
|
||||
//- rjf: fill out default gfx info
|
||||
lnx_wm_state->gfx_info.double_click_time = 0.5f;
|
||||
lnx_wm_state->gfx_info.caret_blink_time = 0.5f;
|
||||
lnx_wm_state->gfx_info.default_refresh_rate = 60.f;
|
||||
|
||||
//- rjf: determine default refresh rate
|
||||
{
|
||||
XRRScreenResources *res = XRRGetScreenResourcesCurrent(lnx_wm_state->display, DefaultRootWindow(lnx_wm_state->display));
|
||||
for EachIndex(idx, res->noutput)
|
||||
{
|
||||
XRROutputInfo *out_info = XRRGetOutputInfo(lnx_wm_state->display, res, res->outputs[idx]);
|
||||
if(out_info && out_info->connection == RR_Connected && out_info->crtc != None)
|
||||
{
|
||||
XRRCrtcInfo *crtc_info = XRRGetCrtcInfo(lnx_wm_state->display, res, out_info->crtc);
|
||||
if(crtc_info)
|
||||
{
|
||||
for EachIndex(mode_idx, res->nmode)
|
||||
{
|
||||
if(res->modes[mode_idx].id == crtc_info->mode)
|
||||
{
|
||||
XRRModeInfo *mode_info = &res->modes[mode_idx];
|
||||
if(mode_info->vTotal != 0 && mode_info->hTotal != 0)
|
||||
{
|
||||
lnx_wm_state->gfx_info.default_refresh_rate = (F32)mode_info->dotClock / ((F32)mode_info->hTotal * (F32)mode_info->vTotal);
|
||||
}
|
||||
}
|
||||
}
|
||||
XRRFreeCrtcInfo(crtc_info);
|
||||
}
|
||||
XRRFreeOutputInfo(out_info);
|
||||
}
|
||||
}
|
||||
XRRFreeScreenResources(res);
|
||||
}
|
||||
|
||||
//- rjf: fill out cursors
|
||||
{
|
||||
struct
|
||||
|
||||
@@ -12,6 +12,7 @@
|
||||
#include <X11/cursorfont.h>
|
||||
#include <X11/extensions/sync.h>
|
||||
#include <X11/extensions/Xfixes.h>
|
||||
#include <X11/extensions/Xrandr.h>
|
||||
#include <X11/keysym.h>
|
||||
#include <X11/keysymdef.h>
|
||||
#include <poll.h>
|
||||
|
||||
Reference in new issue
Block a user