Merge tag '1.7.5' into wayland

This commit is contained in:
lbonn
2022-08-24 00:14:11 +02:00
8 changed files with 57 additions and 7 deletions

View File

@@ -49,6 +49,10 @@ When adding comments to an issue make sure:
* It is relevant to the issue.
* It contributes to solving the issue.
* Use :+1: :-1: emojis instead of replying 'me too' or 'I also have this.'
* Do **NOT** ask for an update. Asking does not contribute to solving the issue
and just annoys people with a notification. The answer is already available;
if there is an update it will be linked/mentioned in the issue, otherwise
there is no update.
Issue high-jacking, e.g. adding a request/issue to an existing issue, is very

View File

@@ -14,6 +14,8 @@ body:
If you are unsure, please use the [discussion](https://github.com/davatorium/rofi/discussions) forum first. It is easy to upgrade a question to an issue in github.
If you report problems with speed in rofi, please attach a [timing trace](https://github.com/davatorium/rofi/blob/next/doc/rofi-debugging.5.markdown#timing-traces).
**Please do not submit reports related to wayland, see [here](https://github.com/DaveDavenport/rofi/wiki/Wayland) for more information.**
- type: input

View File

@@ -11,6 +11,7 @@
# Please match the documentation and example scripts to the version of rofi used:
* [next version](https://github.com/davatorium/rofi)
* [1.7.4](https://github.com/davatorium/rofi/tree/1.7.4)
* [1.7.3](https://github.com/davatorium/rofi/tree/1.7.3)
* [1.7.2](https://github.com/davatorium/rofi/tree/1.7.2)
* [1.7.1](https://github.com/davatorium/rofi/tree/1.7.1)

View File

@@ -1,4 +1,4 @@
AC_INIT([rofi], [1.7.4], [https://github.com/davatorium/rofi/],[],[https://reddit.com/r/qtools/])
AC_INIT([rofi], [1.7.5], [https://github.com/davatorium/rofi/],[],[https://reddit.com/r/qtools/])
AC_CONFIG_SRCDIR([source/rofi.c])
AC_CONFIG_HEADER([config.h])

View File

@@ -1,5 +1,5 @@
project('rofi', 'c',
version: '1.7.4+wayland1',
version: '1.7.5+wayland1',
meson_version: '>=0.47.0',
license: [ 'MIT' ],
default_options: [

View File

@@ -0,0 +1,28 @@
# 1.7.5: We shell overcome
A quick bug-fix release to fix 2 small issues.
* In DMenu sync mode, the separator is left in the string.
* On special crafted delayed input in dmenu it shows updates to the list very slow.
It now forces to push update (if there) every 1/10 of a second.
* In the view some of the update/redraw policies are fixed to reduced the
perceived delay.
This makes it clear we need more people testing the development version to
catch these bugs. I only use a very limited set of features myself and do not
have the time nor energy to write and maintain a good automated test setup.
There was one in the past that tested some basic features by running rofi,
inputting user input and validating output. But it was not reliable and
difficult to keep running.
# Thanks
Big thanks to everybody reporting issues.
Special thanks goes to:
* Iggy
* Morgane Glidic
* Danny Colin
Apologies if I mistyped or missed anybody.

View File

@@ -237,6 +237,10 @@ static void read_input_sync(DmenuModePrivateData *pd, unsigned int pre_read) {
char *line = NULL;
while (pre_read > 0 &&
(nread = getdelim(&line, &len, pd->separator, pd->fd_file)) != -1) {
if (line[nread - 1] == pd->separator) {
nread--;
line[nread] = '\0';
}
read_add(pd, line, nread);
pre_read--;
}
@@ -252,6 +256,7 @@ static gpointer read_input_thread(gpointer userdata) {
pd->async_queue = g_async_queue_new();
Block *block = NULL;
GTimer *tim = g_timer_new();
int fd = pd->fd;
while (1) {
// Wait for input from the input or from the main thread.
@@ -291,11 +296,15 @@ static gpointer read_input_thread(gpointer userdata) {
memmove(&line[0], &line[i + 1], nread - (i + 1));
nread -= (i + 1);
i = 0;
if (block && block->length == BLOCK_LINES_SIZE) {
if (block) {
double elapsed = g_timer_elapsed(tim, NULL);
if ( elapsed >= 0.1 || block->length == BLOCK_LINES_SIZE) {
g_timer_start(tim);
g_async_queue_push(pd->async_queue, block);
block = NULL;
write(pd->pipefd2[1], "r", 1);
}
}
} else {
i++;
}
@@ -307,6 +316,7 @@ static gpointer read_input_thread(gpointer userdata) {
read_add_block(pd, &block, line, nread);
}
if (block) {
g_timer_start(tim);
g_async_queue_push(pd->async_queue, block);
block = NULL;
write(pd->pipefd2[1], "r", 1);
@@ -322,12 +332,14 @@ static gpointer read_input_thread(gpointer userdata) {
nread = 0;
}
if (block) {
g_timer_start(tim);
g_async_queue_push(pd->async_queue, block);
block = NULL;
write(pd->pipefd2[1], "r", 1);
}
}
}
g_timer_destroy(tim);
free(line);
write(pd->pipefd2[1], "q", 1);
return NULL;

View File

@@ -235,6 +235,7 @@ static gboolean xcb_rofi_view_repaint(G_GNUC_UNUSED void *data) {
// After a resize the edit_pixmap surface might not contain anything
// anymore. If we already re-painted, this does nothing.
TICK_N("Update start");
rofi_view_update(state, FALSE);
g_debug("expose event");
TICK_N("Expose");
@@ -504,7 +505,7 @@ static void xcb_rofi_view_reload(void) {
// @TODO add check if current view is equal to the callee
if (XcbState.idle_timeout == 0) {
XcbState.idle_timeout =
g_timeout_add(1000 / 10, xcb_rofi_view_reload_idle, NULL);
g_timeout_add(1000 / 100, xcb_rofi_view_reload_idle, NULL);
}
}
static void xcb_rofi_view_queue_redraw(void) {
@@ -804,6 +805,8 @@ static void xcb_rofi_view_temp_click_to_exit(RofiViewState *state,
static void xcb_rofi_view_frame_callback(void) {
if (XcbState.repaint_source == 0) {
XcbState.count++;
g_debug("redraw %llu", XcbState.count);
XcbState.repaint_source = g_idle_add_full(
G_PRIORITY_HIGH_IDLE, xcb_rofi_view_repaint, NULL, NULL);
}