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
|
shell: bash
|
||||||
run: |
|
run: |
|
||||||
sudo apt-get update
|
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
|
- name: Install clang-17 Dependencies
|
||||||
if: ${{ matrix.compiler == 'clang-17' }}
|
if: ${{ matrix.compiler == 'clang-17' }}
|
||||||
@@ -162,7 +162,7 @@ jobs:
|
|||||||
wget -O - https://apt.llvm.org/llvm-snapshot.gpg.key | sudo apt-key add -
|
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-add-repository -y "deb http://apt.llvm.org/noble/ llvm-toolchain-noble-22 main"
|
||||||
sudo apt-get update
|
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
|
# crash callstack symbolizer depends on LLVM
|
||||||
sudo ln -s /usr/bin/llvm-symbolizer-22 /usr/bin/llvm-symbolizer
|
sudo ln -s /usr/bin/llvm-symbolizer-22 /usr/bin/llvm-symbolizer
|
||||||
- name: Run
|
- name: Run
|
||||||
|
|||||||
@@ -247,6 +247,7 @@ on the system:
|
|||||||
- `libx11`
|
- `libx11`
|
||||||
- `libxext`
|
- `libxext`
|
||||||
- `libxfixes`
|
- `libxfixes`
|
||||||
|
- `libxrandr`
|
||||||
- `libgl`
|
- `libgl`
|
||||||
- `libegl`
|
- `libegl`
|
||||||
|
|
||||||
@@ -256,13 +257,13 @@ installed using one of the following commands, depending on your distribution:
|
|||||||
#### Ubuntu / Debian / Mint
|
#### 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
|
#### Arch / Manjaro
|
||||||
|
|
||||||
```
|
```
|
||||||
sudo pacman -S --needed freetype2 libx11 libxext libxfixes libglvnd
|
sudo pacman -S --needed freetype2 libx11 libxext libxfixes libxrandr libglvnd
|
||||||
```
|
```
|
||||||
|
|
||||||
### 3. Building
|
### 3. Building
|
||||||
|
|||||||
@@ -29,14 +29,14 @@ cc_link="-lpthread -lm -lrt -ldl"
|
|||||||
cc_link_dll="-fPIC"
|
cc_link_dll="-fPIC"
|
||||||
|
|
||||||
# --- External Libraries ------------------------------------------------------
|
# --- 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
|
if [[ -x "$(command -v pkg-config)" ]]; then
|
||||||
cc_font_provider="$(pkg-config --cflags --libs freetype2)"
|
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)"
|
cc_render="$(pkg-config --cflags --libs gl egl)"
|
||||||
else
|
else
|
||||||
cc_font_provider="-I/usr/include/freetype2 -lfreetype"
|
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"
|
cc_render="-lGL -lEGL"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
|||||||
@@ -374,11 +374,41 @@ wm_init(void)
|
|||||||
//- rjf: open im
|
//- rjf: open im
|
||||||
lnx_wm_state->xim = XOpenIM(lnx_wm_state->display, 0, 0, 0);
|
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.double_click_time = 0.5f;
|
||||||
lnx_wm_state->gfx_info.caret_blink_time = 0.5f;
|
lnx_wm_state->gfx_info.caret_blink_time = 0.5f;
|
||||||
lnx_wm_state->gfx_info.default_refresh_rate = 60.f;
|
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
|
//- rjf: fill out cursors
|
||||||
{
|
{
|
||||||
struct
|
struct
|
||||||
|
|||||||
@@ -12,6 +12,7 @@
|
|||||||
#include <X11/cursorfont.h>
|
#include <X11/cursorfont.h>
|
||||||
#include <X11/extensions/sync.h>
|
#include <X11/extensions/sync.h>
|
||||||
#include <X11/extensions/Xfixes.h>
|
#include <X11/extensions/Xfixes.h>
|
||||||
|
#include <X11/extensions/Xrandr.h>
|
||||||
#include <X11/keysym.h>
|
#include <X11/keysym.h>
|
||||||
#include <X11/keysymdef.h>
|
#include <X11/keysymdef.h>
|
||||||
#include <poll.h>
|
#include <poll.h>
|
||||||
|
|||||||
Reference in new issue
Block a user