| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
| |
Currently, both sides of the pipe are blocking, although we do not
need blocking read(). Convert it back to blocking. Eliminate the
select() from wait_main_task().
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
To wake up the main thread, don't attempt to use a GCond/GMutex
(struct notify). This kind of mixed wakeup method has known race
conditions.
The idea behind this patch is: for wakeups which happen while the main
thread is sleeping, use only a pipe. For wakeups which happen while
the main thread is waiting for the player thread, we can later change
to GCond. For now, accept the overhead of using a pipe for the
latter.
In the long run, the main thread will never wait for the player
thread, but will do everything asynchronously.
|
|
|
|
|
| |
There is no point in making the server socket non-blocking. We call
accept() only after select() has notified us about a new connection.
|
|
|
|
|
|
| |
The new WIN32 version of set_nonblocking() can only deal with sockets,
i.e. it will fail on main_notify.c. On WIN32, we have to reimplement
main_notify.c anyway, so this is not a big deal.
|
|
|
|
|
|
| |
There are no unix sockets on WIN32, and therefore no authentication.
WIN32 might have similar capabilities, but until we implement them,
disable that MPD feature.
|
|
|
|
| |
Sleep() has only millisecond granularity, but good enough for now.
|
|
|
|
|
| |
On Windows, socket declarations reside in winsock.h and ws2tcpip.h.
The POSIX headers are not available.
|
|
|
|
| |
Add G_GNUC_UNUSED attributes.
|
|
|
|
|
| |
To test if a string is empty, we can just see if the first byte is 0.
No need to include string.h for strlen() here.
|
|
|
|
|
| |
Moved implementation specific code to their own sources, internal
declarations in zeroconf-internal.h.
|
|
|
|
|
| |
If the configured avahi service name is invalid, abort MPD. Don't
fall back to the default service name.
|
|
|
|
| |
srandom() and random() are not portable. Use GLib's implementation.
|
|
|
|
| |
Don't bother to call fstat() or isatty() on STDIN_FILENO.
|
|
|
|
|
| |
redirect_stdin() is a daemonization function, and disconnecting from
the standard input is always a good idea for MPD.
|
| |
|
|
|
|
|
| |
Merged freeAllListenSockets() into closeAllListenSockets(), because
this is its only caller.
|
| |
|
|
|
|
| |
Disable changeToUser(), daemonize(), killFromPidFile().
|
|
|
|
|
|
| |
On WIN32, parsePath() now simply duplicates the input string. There
is currently nothing special we can do here. The old code was not
portable on WIN32.
|
|
|
|
|
| |
Use g_get_home_dir() to get the home directory of the current user.
This will be portable to win32.
|
|
|
|
| |
Declare variables where they are really used.
|
|
|
|
|
| |
On Windows, socket declarations reside in winsock.h and ws2tcpip.h.
The POSIX headers sys/socket.h etc. are not available.
|
|
|
|
| |
Removed the fallback setenv() implementation for solaris.
|
|
|
|
| |
Removed GLib logging wrappers which are not used anymore.
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
|
|
|
| |
If a log message does not include a newline character, append it.
|
|
|
|
|
| |
Only include headers which are really needed. os_compat.h aimed to
make MPD easily portable, but was never actually made portable.
|
|
|
|
| |
gmtime_r() is not available.
|
|
|
|
| |
These methods are unused.
|
|
|
|
| |
Fix for bug #1491.
|
|
|
|
|
|
|
|
|
|
| |
I tried to search for a certain composer in my collection, but only
non-mp4 files showed up. The source code reveals that this tag is not
read. This can be fixed by reading the 'Writer' tag field, in
mp4_plugin.c, in function mp4_load_tag.
I actually tried this, and after compiling with those lines added,
also mp4 (.m4a) files showed up when searching for a composer.
|
|
|
|
|
| |
All archive plugins used to overwrite $MPD_LIBS, ignoring the existing
value. Make them append instead, keeping the old value.
|
|
|
|
|
| |
Don't bother to look for libbz2, libzzip and libiso9660 if the plugins
are disabled.
|
|
|
|
| |
We're now using GLib threading.
|
| |
|
| |
|