mirror of
https://git.FreeBSD.org/ports.git
synced 2024-11-18 00:10:04 +00:00
games/moonlight-embedded: Update to 2.7.0
PR: 280114
This commit is contained in:
parent
7b0c816794
commit
1e807e9107
@ -1,5 +1,5 @@
|
||||
PORTNAME= moonlight-embedded
|
||||
DISTVERSION= 2.6.2
|
||||
DISTVERSION= 2.7.0
|
||||
CATEGORIES= games
|
||||
MASTER_SITES= https://github.com/moonlight-stream/moonlight-embedded/releases/download/v${DISTVERSION}/
|
||||
|
||||
@ -19,28 +19,45 @@ LIB_DEPENDS= libavahi-client.so:net/avahi-app \
|
||||
libexpat.so:textproc/expat2 \
|
||||
libopus.so:audio/opus \
|
||||
libudev.so:devel/libudev-devd \
|
||||
libuuid.so:misc/e2fsprogs-libuuid \
|
||||
libvdpau.so:multimedia/libvdpau \
|
||||
libva.so:multimedia/libva
|
||||
libuuid.so:misc/e2fsprogs-libuuid
|
||||
|
||||
USES= cmake gl localbase:ldflags perl5 pkgconfig sdl ssl tar:xz xorg
|
||||
USES= cmake localbase:ldflags perl5 pkgconfig sdl ssl tar:xz
|
||||
USE_LDCONFIG= yes
|
||||
USE_GL= egl glesv2
|
||||
USE_PERL5= build
|
||||
USE_SDL= sdl2
|
||||
USE_XORG= x11
|
||||
|
||||
NO_WRKSUBDIR= yes
|
||||
CFLAGS+= -DHAS_SOCKLEN_T=1 -I${LOCALBASE}/include/libepoll-shim/
|
||||
LDFLAGS+= -lepoll-shim
|
||||
CMAKE_OFF= ENABLE_CEC ENABLE_PULSE
|
||||
CMAKE_ON= ENET_NO_INSTALL
|
||||
CONFLICTS_INSTALL= moonlight-embedded-devel
|
||||
|
||||
PLIST_FILES= bin/moonlight \
|
||||
"@sample etc/moonlight.conf.sample" \
|
||||
share/man/man1/moonlight.1.gz \
|
||||
share/moonlight/gamecontrollerdb.txt
|
||||
|
||||
OPTIONS_DEFAULT= OSS X11
|
||||
OSS_DESC= Open Sound System support for embedded(not SDL) platform
|
||||
PULSE_DESC= PulseAudio sound server support for embedded(not SDL) platform
|
||||
CEC_DESC= Enable HDMI-CEC(TV controller) feature by using libcec.so
|
||||
X11_DESC= Enable x11 and x11_vaapi platform using xorg
|
||||
OPTIONS_SINGLE= SOUND
|
||||
OPTIONS_SINGLE_SOUND= OSS PULSE
|
||||
OPTIONS_GROUP= DISPLAY OTHERS
|
||||
OPTIONS_GROUP_OTHERS= CEC
|
||||
OPTIONS_GROUP_DISPLAY= X11
|
||||
OSS_CMAKE_ON= -DENABLE_PULSE:BOOL=false
|
||||
PULSE_CMAKE_BOOL= ENABLE_PULSE
|
||||
PULSE_LIB_DEPENDS= libpulse.so:audio/pulseaudio
|
||||
CEC_CMAKE_BOOL= ENABLE_CEC
|
||||
CEC_LIB_DEPENDS= libcec.so:multimedia/libcec \
|
||||
libp8-platform.so:devel/p8-platform
|
||||
X11_USES= xorg gl
|
||||
X11_USE= xorg=x11 gl=egl,glesv2
|
||||
X11_CMAKE_BOOL= ENABLE_X11
|
||||
X11_LIB_DEPENDS= libvdpau.so:multimedia/libvdpau \
|
||||
libva.so:multimedia/libva
|
||||
|
||||
post-extract:
|
||||
@${REINPLACE_CMD} -e 's|/etc/moonlight/|${PREFIX}/etc/moonlight/|g' \
|
||||
${WRKSRC}/docs/README.pod
|
||||
|
@ -1,3 +1,3 @@
|
||||
TIMESTAMP = 1701007066
|
||||
SHA256 (moonlight-embedded-2.6.2.tar.xz) = 8bcc69b403a628efaf8686d40c0d1428b46defe4c65b06ff6ccc3fe32f0b2356
|
||||
SIZE (moonlight-embedded-2.6.2.tar.xz) = 328660
|
||||
TIMESTAMP = 1708491885
|
||||
SHA256 (moonlight-embedded-2.7.0.tar.xz) = 6527718e678dafd6e1e1876bbc6949538b38986d54ebda0b7fdc3b3f4af4f2dd
|
||||
SIZE (moonlight-embedded-2.7.0.tar.xz) = 335984
|
||||
|
@ -1,14 +0,0 @@
|
||||
--- CMakeLists.txt.orig 2023-11-03 06:08:34 UTC
|
||||
+++ CMakeLists.txt
|
||||
@@ -87,6 +87,11 @@ add_executable(moonlight ${SRC_LIST})
|
||||
target_link_libraries(moonlight m)
|
||||
target_link_libraries(moonlight gamestream)
|
||||
|
||||
+if (CMAKE_SYSTEM_NAME MATCHES "FreeBSD")
|
||||
+ set(ALSA_FOUND FALSE)
|
||||
+ target_sources(moonlight PRIVATE ./src/audio/oss.c)
|
||||
+endif()
|
||||
+
|
||||
if (CEC_FOUND)
|
||||
list(APPEND MOONLIGHT_DEFINITIONS HAVE_LIBCEC)
|
||||
list(APPEND MOONLIGHT_OPTIONS CEC)
|
@ -1,6 +1,6 @@
|
||||
--- libgamestream/CMakeLists.txt.orig 2023-11-03 06:08:34 UTC
|
||||
--- libgamestream/CMakeLists.txt.orig 2024-02-20 04:01:31 UTC
|
||||
+++ libgamestream/CMakeLists.txt
|
||||
@@ -3,7 +3,7 @@ set(SO_VERSION 4)
|
||||
@@ -3,7 +3,7 @@ find_package(CURL REQUIRED)
|
||||
find_package(LibUUID REQUIRED)
|
||||
find_package(Threads REQUIRED)
|
||||
find_package(CURL REQUIRED)
|
||||
@ -21,8 +21,8 @@
|
||||
target_link_libraries(gamestream moonlight-common)
|
||||
|
||||
set_target_properties(gamestream PROPERTIES SOVERSION ${SO_VERSION} VERSION ${PROJECT_VERSION})
|
||||
@@ -28,5 +28,3 @@ target_include_directories(moonlight-common PRIVATE ..
|
||||
target_link_libraries(gamestream ${CURL_LIBRARIES} ${OPENSSL_LIBRARIES} ${EXPAT_LIBRARIES} ${AVAHI_LIBRARIES} ${LIBUUID_LIBRARIES})
|
||||
@@ -28,5 +28,3 @@ target_link_libraries(gamestream ${CMAKE_THREAD_LIBS_I
|
||||
target_link_libraries(gamestream ${CURL_LIBRARIES} ${OPENSSL_LIBRARIES} ${EXPAT_LIBRARIES} ${AVAHI_LIBRARIES} ${LibUUID_LIBRARIES})
|
||||
|
||||
target_link_libraries(gamestream ${CMAKE_THREAD_LIBS_INIT} ${CMAKE_DL_LIBS})
|
||||
-
|
||||
|
@ -1,10 +1,9 @@
|
||||
--- libgamestream/client.c.orig 2023-11-03 06:08:34 UTC
|
||||
--- libgamestream/client.c.orig 2024-02-20 04:01:31 UTC
|
||||
+++ libgamestream/client.c
|
||||
@@ -537,7 +537,16 @@ int gs_pair(PSERVER_DATA server, char* pin) {
|
||||
@@ -539,7 +539,15 @@ int gs_pair(PSERVER_DATA server, char* pin) {
|
||||
RAND_bytes(client_secret_data, sizeof(client_secret_data));
|
||||
|
||||
const ASN1_BIT_STRING *asnSignature;
|
||||
+
|
||||
+#ifdef __FreeBSD__
|
||||
+ #if OPENSSL_VERSION_NUMBER >= 0x10100000L && !defined(LIBRESSL_VERSION_NUMBER)
|
||||
X509_get0_signature(&asnSignature, NULL, cert);
|
||||
@ -15,5 +14,5 @@
|
||||
+ X509_get0_signature(&asnSignature, NULL, cert);
|
||||
+#endif
|
||||
|
||||
char challenge_response[16 + SIGNATURE_LEN + sizeof(client_secret_data)];
|
||||
challenge_response = malloc(16 + asnSignature->length + sizeof(client_secret_data));
|
||||
char challenge_response_hash[32];
|
||||
|
@ -1,12 +0,0 @@
|
||||
--- libgamestream/http.c.orig 2023-11-03 06:08:34 UTC
|
||||
+++ libgamestream/http.c
|
||||
@@ -73,6 +73,9 @@ int http_init(const char* keyDirectory, int logLevel)
|
||||
int http_request(char* url, PHTTP_DATA data) {
|
||||
curl_easy_setopt(curl, CURLOPT_WRITEDATA, data);
|
||||
curl_easy_setopt(curl, CURLOPT_URL, url);
|
||||
+#ifdef __FreeBSD__
|
||||
+ curl_easy_setopt(curl, CURLOPT_FORBID_REUSE, 1);
|
||||
+#endif
|
||||
|
||||
if (debug)
|
||||
printf("Request %s\n", url);
|
@ -1,9 +0,0 @@
|
||||
--- src/audio/audio.h.orig 2023-11-03 06:08:34 UTC
|
||||
+++ src/audio/audio.h
|
||||
@@ -31,3 +31,6 @@ extern AUDIO_RENDERER_CALLBACKS audio_callbacks_sdl;
|
||||
extern AUDIO_RENDERER_CALLBACKS audio_callbacks_pulse;
|
||||
bool audio_pulse_init(char* audio_device);
|
||||
#endif
|
||||
+#ifdef __FreeBSD__
|
||||
+extern AUDIO_RENDERER_CALLBACKS audio_callbacks_oss;
|
||||
+#endif
|
@ -1,108 +0,0 @@
|
||||
--- src/audio/oss.c.orig 2024-01-01 05:31:28 UTC
|
||||
+++ src/audio/oss.c
|
||||
@@ -0,0 +1,105 @@
|
||||
+/*
|
||||
+ * This file is part of Moonlight Embedded.
|
||||
+ *
|
||||
+ * Copyright (C) 2015-2017 Iwan Timmer
|
||||
+ *
|
||||
+ * Moonlight is free software; you can redistribute it and/or modify
|
||||
+ * it under the terms of the GNU General Public License as published by
|
||||
+ * the Free Software Foundation; either version 3 of the License, or
|
||||
+ * (at your option) any later version.
|
||||
+ *
|
||||
+ * Moonlight is distributed in the hope that it will be useful,
|
||||
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
+ * GNU General Public License for more details.
|
||||
+ *
|
||||
+ * You should have received a copy of the GNU General Public License
|
||||
+ * along with Moonlight; if not, see <http://www.gnu.org/licenses/>.
|
||||
+ */
|
||||
+
|
||||
+#ifdef __FreeBSD__
|
||||
+#include <sys/soundcard.h>
|
||||
+#include <sys/ioctl.h>
|
||||
+#include "audio.h"
|
||||
+
|
||||
+#include <opus_multistream.h>
|
||||
+
|
||||
+#include <errno.h>
|
||||
+#include <fcntl.h>
|
||||
+#include <stdio.h>
|
||||
+#include <stdlib.h>
|
||||
+#include <unistd.h>
|
||||
+
|
||||
+static OpusMSDecoder* decoder;
|
||||
+static short* pcmBuffer;
|
||||
+static int samplesPerFrame;
|
||||
+static int channelCount;
|
||||
+static int fd = -1;
|
||||
+
|
||||
+static int oss_renderer_init(int audioConfiguration, POPUS_MULTISTREAM_CONFIGURATION opusConfig, void* context, int arFlags) {
|
||||
+ int rc;
|
||||
+ decoder = opus_multistream_decoder_create(opusConfig->sampleRate, opusConfig->channelCount, opusConfig->streams, opusConfig->coupledStreams, opusConfig->mapping, &rc);
|
||||
+
|
||||
+ channelCount = opusConfig->channelCount;
|
||||
+ samplesPerFrame = opusConfig->samplesPerFrame;
|
||||
+ pcmBuffer = malloc(sizeof(short) * channelCount * samplesPerFrame);
|
||||
+ if (pcmBuffer == NULL)
|
||||
+ return -1;
|
||||
+
|
||||
+ const char* oss_name = "/dev/dsp";
|
||||
+ fd = open(oss_name, O_WRONLY);
|
||||
+ if (fd == -1) {
|
||||
+ printf("Open audio device /dev/dsp failed! error %d\n", errno);
|
||||
+ return -1;
|
||||
+ }
|
||||
+ // buffer size for fragment ,selector 12 is 4096;11 is 2048;10 is 1024; 13is 8192
|
||||
+ int frag = 12;
|
||||
+ if (ioctl(fd, SNDCTL_DSP_SETFRAGMENT, &frag) == -1)
|
||||
+ printf("Set fragment for /dev/dsp failed.");
|
||||
+
|
||||
+ int format = AFMT_S16_LE;
|
||||
+ int channels = opusConfig->channelCount;
|
||||
+ int rate = opusConfig->sampleRate;
|
||||
+ if (ioctl(fd, SNDCTL_DSP_SETFMT, &format) == -1)
|
||||
+ printf("Set format for /dev/dsp failed.");
|
||||
+ if (ioctl(fd, SNDCTL_DSP_CHANNELS, &channels) == -1)
|
||||
+ printf("Set channels for /dev/dsp failed.");
|
||||
+ if (ioctl(fd, SNDCTL_DSP_SPEED, &rate) == -1)
|
||||
+ printf("Set sample rate for /dev/dsp failed.");
|
||||
+
|
||||
+ return 0;
|
||||
+}
|
||||
+
|
||||
+static void oss_renderer_cleanup() {
|
||||
+ if (decoder != NULL) {
|
||||
+ opus_multistream_decoder_destroy(decoder);
|
||||
+ decoder = NULL;
|
||||
+ }
|
||||
+
|
||||
+ if (pcmBuffer != NULL) {
|
||||
+ free(pcmBuffer);
|
||||
+ pcmBuffer = NULL;
|
||||
+ }
|
||||
+
|
||||
+ if (fd != -1) {
|
||||
+ close(fd);
|
||||
+ fd = -1;
|
||||
+ }
|
||||
+}
|
||||
+
|
||||
+static void oss_renderer_decode_and_play_sample(char* data, int length) {
|
||||
+ int decodeLen = opus_multistream_decode(decoder, data, length, pcmBuffer, samplesPerFrame, 0);
|
||||
+ if (decodeLen > 0) {
|
||||
+ write(fd, pcmBuffer, decodeLen * channelCount * sizeof(short));
|
||||
+ } else if (decodeLen < 0) {
|
||||
+ printf("Opus error from decode: %d\n", decodeLen);
|
||||
+ }
|
||||
+}
|
||||
+
|
||||
+AUDIO_RENDERER_CALLBACKS audio_callbacks_oss = {
|
||||
+ .init = oss_renderer_init,
|
||||
+ .cleanup = oss_renderer_cleanup,
|
||||
+ .decodeAndPlaySample = oss_renderer_decode_and_play_sample,
|
||||
+ .capabilities = CAPABILITY_DIRECT_SUBMIT | CAPABILITY_SUPPORTS_ARBITRARY_AUDIO_DURATION,
|
||||
+};
|
||||
+#endif
|
@ -1,14 +1,7 @@
|
||||
--- src/input/evdev.c.orig 2023-11-03 06:08:34 UTC
|
||||
--- src/input/evdev.c.orig 2024-02-20 04:01:31 UTC
|
||||
+++ src/input/evdev.c
|
||||
@@ -38,9 +38,15 @@
|
||||
#include <limits.h>
|
||||
#include <unistd.h>
|
||||
#include <pthread.h>
|
||||
+#ifdef __linux__
|
||||
#include <endian.h>
|
||||
+#else
|
||||
+#include <sys/endian.h>
|
||||
+#endif
|
||||
@@ -45,6 +45,8 @@
|
||||
#endif
|
||||
#include <math.h>
|
||||
|
||||
+static bool isUseKbdmux = false;
|
||||
@ -16,21 +9,7 @@
|
||||
#if __BYTE_ORDER == __LITTLE_ENDIAN
|
||||
#define int16_to_le(val) val
|
||||
#else
|
||||
@@ -66,8 +72,13 @@ struct input_device {
|
||||
int hats_state[3][2];
|
||||
int fd;
|
||||
char modifiers;
|
||||
+ #ifdef __linux__
|
||||
__s32 mouseDeltaX, mouseDeltaY, mouseVScroll, mouseHScroll;
|
||||
__s32 touchDownX, touchDownY, touchX, touchY;
|
||||
+ #else
|
||||
+ int32_t mouseDeltaX, mouseDeltaY, mouseVScroll, mouseHScroll;
|
||||
+ int32_t touchDownX, touchDownY, touchX, touchY;
|
||||
+ #endif
|
||||
struct timeval touchDownTime;
|
||||
struct timeval btnDownTime;
|
||||
short controllerId;
|
||||
@@ -749,7 +760,7 @@ static int evdev_handle(int fd) {
|
||||
@@ -758,7 +760,7 @@ static int evdev_handle(int fd) {
|
||||
struct input_event ev;
|
||||
while ((rc = libevdev_next_event(devices[i].dev, LIBEVDEV_READ_FLAG_NORMAL, &ev)) >= 0) {
|
||||
if (rc == LIBEVDEV_READ_STATUS_SYNC)
|
||||
@ -39,7 +18,7 @@
|
||||
else if (rc == LIBEVDEV_READ_STATUS_SUCCESS) {
|
||||
if (!handler(&ev, &devices[i]))
|
||||
return LOOP_RETURN;
|
||||
@@ -766,6 +777,39 @@ static int evdev_handle(int fd) {
|
||||
@@ -775,6 +777,39 @@ static int evdev_handle(int fd) {
|
||||
return LOOP_OK;
|
||||
}
|
||||
|
||||
@ -79,7 +58,7 @@
|
||||
void evdev_create(const char* device, struct mapping* mappings, bool verbose, int rotate) {
|
||||
int fd = open(device, O_RDWR|O_NONBLOCK);
|
||||
if (fd <= 0) {
|
||||
@@ -840,6 +884,33 @@ void evdev_create(const char* device, struct mapping*
|
||||
@@ -851,6 +886,33 @@ void evdev_create(const char* device, struct mapping*
|
||||
libevdev_has_event_code(evdev, EV_ABS, ABS_WHEEL) ||
|
||||
libevdev_has_event_code(evdev, EV_ABS, ABS_GAS) ||
|
||||
libevdev_has_event_code(evdev, EV_ABS, ABS_BRAKE));
|
||||
|
@ -1,4 +1,4 @@
|
||||
--- src/main.c.orig 2023-11-03 06:08:34 UTC
|
||||
--- src/main.c.orig 2024-02-20 04:01:31 UTC
|
||||
+++ src/main.c
|
||||
@@ -42,6 +42,7 @@
|
||||
#include <client.h>
|
||||
@ -54,16 +54,17 @@
|
||||
|
||||
#ifdef HAVE_SDL
|
||||
if (system == SDL)
|
||||
@@ -362,6 +363,8 @@ int main(int argc, char* argv[]) {
|
||||
@@ -362,6 +363,9 @@ int main(int argc, char* argv[]) {
|
||||
mappings = map;
|
||||
}
|
||||
|
||||
+ // test is use kbdmux driver
|
||||
+ is_use_kbdmux();
|
||||
+ if (config.inputsCount <= 0)
|
||||
+ is_use_kbdmux();
|
||||
for (int i=0;i<config.inputsCount;i++) {
|
||||
if (config.debug_level > 0)
|
||||
printf("Adding input device %s...\n", config.inputs[i]);
|
||||
@@ -398,7 +401,8 @@ int main(int argc, char* argv[]) {
|
||||
@@ -398,7 +402,8 @@ int main(int argc, char* argv[]) {
|
||||
if (config.pin > 0 && config.pin <= 9999) {
|
||||
sprintf(pin, "%04d", config.pin);
|
||||
} else {
|
||||
@ -73,7 +74,7 @@
|
||||
}
|
||||
printf("Please enter the following PIN on the target PC: %s\n", pin);
|
||||
fflush(stdout);
|
||||
@@ -406,6 +410,7 @@ int main(int argc, char* argv[]) {
|
||||
@@ -406,6 +411,7 @@ int main(int argc, char* argv[]) {
|
||||
fprintf(stderr, "Failed to pair to server: %s\n", gs_error);
|
||||
} else {
|
||||
printf("Succesfully paired\n");
|
||||
|
@ -1,12 +0,0 @@
|
||||
--- src/platform.c.orig 2023-11-03 06:08:34 UTC
|
||||
+++ src/platform.c
|
||||
@@ -202,6 +202,9 @@ AUDIO_RENDERER_CALLBACKS* platform_get_audio(enum plat
|
||||
#ifdef HAVE_ALSA
|
||||
return &audio_callbacks_alsa;
|
||||
#endif
|
||||
+ #ifdef __FreeBSD__
|
||||
+ return &audio_callbacks_oss;
|
||||
+ #endif
|
||||
}
|
||||
return NULL;
|
||||
}
|
Loading…
Reference in New Issue
Block a user