| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
| |
Detect liblircclient with pkg-config.
|
|
|
|
|
| |
The "prog" argument of lirc_init() expects a non-const string.
Pass a local string variable.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The attachment includes the patch and a sample .lircrc config for
testing purposes (i. e. only a few commands are mapped to IR events).
The config is rather simple to write: For each button add a block like
this to ~/.lircrc:
begin
button = <button name from /etc/lircd.conf>
prog = ncmpc
config = <command name from src/command.c>
end
The patch is not finished, there are several problems that still need to
be solved:
1. the configure.ac modifications are just for testing purposes and
should be made optional with a parameter like --enable-lirc
for ./configure. Unfortunately I'm not an expert on autoconfig tools.
2. LIRC example code [1] suggests looping over lirc_code2char, probably
to have multiple actions that can be triggered from one button. Perhaps
lirc_event(...) should be moved to lirc.c and be heavily modified, no
longer being a mere copy of keyboard_event(...).
|
|
|
|
|
| |
Makefile.am uses several features which are not available in the
ancient automake version 1.6. Let's just raise the bar to 1.9.
|
|
|
|
|
| |
libtool isn't required for the ncmpc build process, it only causes
massive slowdown.
|
|
|
|
|
| |
Why check for C++ and fortran compilers? This hack was borrowed from
Qball's gmpc git repository.
|
|
|
|
|
| |
A local variable was only used by the lyrics screen code. Put #ifdef
around its declaration.
|
|
|
|
|
|
|
|
|
| |
wreadln() didn't distinguish narrow from wide characters, which
resulted in display corruption. This patch adds a lot of internal
conversions between byte positions, screen positions and character
position, which hopefully fixes all these bugs. Since these
conversions are quite expensive, the code should be revised and
optimized.
|
|
|
|
|
|
|
| |
For multibyte input, we should use wget_wch(), but this function isn't
supported properly on some platforms. Add a patch which completes a
multibyte character with multiple non-blocking reads. We'll see how
portable this hack is...
|
|
|
|
|
|
| |
After a byte has been inserted, move the cursor right by just one
byte, not one character. The byte may have been the first one in a
multibyte character.
|
|
|
|
|
|
| |
The configure option "--disable-wide" disables wide character support.
This simplifies lots of internal calculations and makes the ncmpc
binary leaner.
|
|
|
|
|
| |
When compiling with libncursesw, include <ncursesw/ncurses.h> instead
of <ncurses.h> (if available).
|
|
|
|
| |
Let memmove() do the dirty work on overlapping buffers..
|
|
|
|
|
| |
Remove some more clutter from wreadln() by merging the duplicate
character deletion code to wreadln_delete_char().
|
|
|
|
| |
Unclutter these functions by removing one indent level.
|
|
|
|
|
| |
Declare all screen position variables as "unsigned", and all buffer
positions as "size_t". We don't need signed values.
|
|
|
|
|
|
|
|
| |
Use memcpy() even when the cursor is at the end. It copies only the
trailing null terminator in this case.
The constant "length" is declared here in preparation for the "wide
character" patches.
|
|
|
|
|
| |
memmove() handles overlapping buffers well, we can use it to get room
for the inserted character.
|
|
|
|
| |
Remove some clutter from wreadln(), isolate some code into a function.
|
|
|
|
|
|
| |
Since the buffer size is already known at compile time, don't do a
second malloc() for it, declare it statically in struct wreadln. This
way, it is going to be allocated on the stack.
|
|
|
|
|
| |
Don't pass a dozen of parameters to all internal functions; pass a
pointer to the wreadln struct instead.
|
|
|
|
|
|
|
| |
Several internal functions calculate the width of the input field by
subtracting "x0" from "x1", although the width is already being passed
to them. Eliminate the parameter "x1" in all functions, and use
"width" instead.
|
|
|
|
|
| |
Convert wrln_max_line_size and wrln_max_history_length to local
constants. They have no real use outside of wreadln.c.
|
|
|
|
|
| |
Don't use "extern" outside of the headers, include the proper header
instead.
|
|
|
|
| |
Follow the same code style als MPD itself.
|
|
|
|
|
| |
There are no special cases left for my_wgetch() to handle. We can
remove it and use the original wgetch() instead.
|
|
|
|
|
| |
We're better off doing our own signal handling, instead of switching
ncurses to raw mode. Anyway, it was commented out and didn't work...
|
|
|
|
|
| |
The wide character version of wreadln() is currently a non-functional
mess. Remove it for now, I will reimplement that later.
|
|
|
|
|
| |
Variables which store integer seconds should be declared as GTime.
This fixes a gcc warning.
|
| |
|
|
|
|
|
| |
Another occurence of the non-portable basename() wasn't converted to
glib yet.
|
|
|
|
|
|
| |
The glib function g_timeout_add() wants the interval as guint in
milliseconds. Store the update interval in this form, instead of
having to multiply MPD_UPDATE_TIME with 1000.
|
|
|
|
|
| |
Don't reset sa_mask and sa_flags after every sigaction() call. Do it
once.
|
|
|
|
|
|
| |
Set option SA_RESTART for the SIGWINCH handler. The screen resizer
function is called by the glib main loop anyway, no need to interrupt
any random system call here.
|
|
|
|
|
|
|
| |
Somehow the "ignore SIGPIPE" patch had a fatal typo: instead of
ignoring SIGPIPE, it ignored SIGWINCH. Somehow ncurses managed to
hide the bug's symptoms, but a recent patch finally broke it. Repair
the typo.
|
|
|
|
|
| |
screen_t is a singleton. We do not have to pass it around
everywhere. Export the one global variable.
|
|
|
|
|
| |
None of the paint() implementations acutally uses the mpdclient
pointer. Remove it from the method signature.
|
|
|
|
|
|
|
| |
Remove the last paint() dependency on the mpdclient pointer: remember
a pointer to the playlist object, and don't take it from mpdclient
every time we paint. Also add the variable "current_song_id" which is
calculated in update().
|
|
|
|
| |
Repaint immediately instead of setting "painted=0".
|
|
|
|
|
| |
Since we are handling SIGWINCH, we do not need to handle KEY_RESIZE
from ncurses. Remove it.
|
|
|
|
|
| |
Save some bytes again: remove search_tag.id, make the array index
equal to the tag id.
|
|
|
|
|
| |
mpdclient_finish_command() is already imported by mpdclient.h, don't
do it again in the sources.
|
|
|
|
| |
The future is now!
|
|
|
|
|
| |
Global variables are already initialized with zero when the program
starts, don't memset(0) again.
|
|
|
|
|
| |
Just make everybody use the global "options" variable. This
eliminates namespace confusion and the NO_GLOBAL_OPTIONS hack.
|
|
|
|
|
| |
Default is colors disabled. Those who love colorful terminals have
the option to enable it with --enable-colors.
|
|
|
|
|
|
| |
Instead of calling printf() multiple times for every compile time
option, build the whole string at compile time and print it with
puts().
|
|
|
|
|
| |
The color ids are sequential, and we can save some bytes if we use it
for the array index.
|
|
|
|
|
| |
Instead of declaring a bunch of CPP macros, use a C enum for
identifying colors.
|
|
|
|
| |
Follow the same code style als MPD itself.
|