diff options
author | worldofpeace <worldofpeace@users.noreply.github.com> | 2019-04-17 18:27:28 -0400 |
---|---|---|
committer | worldofpeace <worldofpeace@users.noreply.github.com> | 2019-04-17 18:27:28 -0400 |
commit | 8696640f222b5de458921e305aeafbf56427be44 (patch) | |
tree | 0c7c40c62ffb6e735aca8d16073e9da59ee989b7 /pkgs/development/libraries/dleyna-renderer | |
parent | f249f32f9e40c472c6085ddf61fb592e28c5118a (diff) | |
download | nixpkgs-8696640f222b5de458921e305aeafbf56427be44.tar nixpkgs-8696640f222b5de458921e305aeafbf56427be44.tar.gz nixpkgs-8696640f222b5de458921e305aeafbf56427be44.tar.bz2 nixpkgs-8696640f222b5de458921e305aeafbf56427be44.tar.lz nixpkgs-8696640f222b5de458921e305aeafbf56427be44.tar.xz nixpkgs-8696640f222b5de458921e305aeafbf56427be44.tar.zst nixpkgs-8696640f222b5de458921e305aeafbf56427be44.zip |
dleyna-renderer: checkout patch in tree
Built this locally and noticed that the hash changed wanted: sha256:0x5vj5zfk95avyg6g3nf6gar250cfrgla2ixj2ifn8pcick2d9vq got: sha256:0m7rxv2nnycvwqpc8ak396g8cbb9g6dw290cjbfwhrrhdhbii5qc
Diffstat (limited to 'pkgs/development/libraries/dleyna-renderer')
-rw-r--r-- | pkgs/development/libraries/dleyna-renderer/default.nix | 7 | ||||
-rw-r--r-- | pkgs/development/libraries/dleyna-renderer/gupnp-1.2.diff | 130 |
2 files changed, 132 insertions, 5 deletions
diff --git a/pkgs/development/libraries/dleyna-renderer/default.nix b/pkgs/development/libraries/dleyna-renderer/default.nix index ad90335d4e9..aae7861fef4 100644 --- a/pkgs/development/libraries/dleyna-renderer/default.nix +++ b/pkgs/development/libraries/dleyna-renderer/default.nix @@ -26,11 +26,8 @@ stdenv.mkDerivation rec { patches = [ # fix build with gupnp 1.2 - (fetchurl { - name = "gupnp-1.2.diff"; - url = https://git.archlinux.org/svntogit/packages.git/plain/trunk/gupnp-1.2.diff?h=packages/dleyna-renderer&id=30b426a1e0ca5857031ed6296bc192d11bd7c5db; - sha256 = "0x5vj5zfk95avyg6g3nf6gar250cfrgla2ixj2ifn8pcick2d9vq"; - }) + # comes from arch linux packaging https://git.archlinux.org/svntogit/packages.git/tree/trunk/gupnp-1.2.diff?h=packages/dleyna-renderer + ./gupnp-1.2.diff ]; nativeBuildInputs = [ diff --git a/pkgs/development/libraries/dleyna-renderer/gupnp-1.2.diff b/pkgs/development/libraries/dleyna-renderer/gupnp-1.2.diff new file mode 100644 index 00000000000..3255695ab23 --- /dev/null +++ b/pkgs/development/libraries/dleyna-renderer/gupnp-1.2.diff @@ -0,0 +1,130 @@ + configure.ac | 4 ++-- + libdleyna/renderer/device.c | 51 +++++++++++++++++++++++++++++++++++++++++++-- + libdleyna/renderer/upnp.c | 4 ++-- + 3 files changed, 53 insertions(+), 6 deletions(-) + +diff --git c/configure.ac i/configure.ac +index 271ee92..364659d 100644 +--- c/configure.ac ++++ i/configure.ac +@@ -38,8 +38,8 @@ LT_LANG([C]) + PKG_PROG_PKG_CONFIG(0.16) + PKG_CHECK_MODULES([GLIB], [glib-2.0 >= 2.28]) + PKG_CHECK_MODULES([GIO], [gio-2.0 >= 2.28]) +-PKG_CHECK_MODULES([GSSDP], [gssdp-1.0 >= 0.13.2]) +-PKG_CHECK_MODULES([GUPNP], [gupnp-1.0 >= 0.20.5]) ++PKG_CHECK_MODULES([GSSDP], [gssdp-1.2 >= 1.2.0]) ++PKG_CHECK_MODULES([GUPNP], [gupnp-1.2 >= 1.2.0]) + PKG_CHECK_MODULES([GUPNPAV], [gupnp-av-1.0 >= 0.11.5]) + PKG_CHECK_MODULES([GUPNPDLNA], [gupnp-dlna-2.0 >= 0.9.4]) + PKG_CHECK_MODULES([SOUP], [libsoup-2.4 >= 2.28.2]) +diff --git c/libdleyna/renderer/device.c i/libdleyna/renderer/device.c +index 7acef89..f6d571e 100644 +--- c/libdleyna/renderer/device.c ++++ i/libdleyna/renderer/device.c +@@ -2121,33 +2121,80 @@ exit: + return; + } + ++typedef struct ++{ ++ GMainLoop *loop; ++ GUPnPServiceIntrospection *introspection; ++ GError **error; ++} GetIntrospectionAsyncData; ++ ++static void ++get_introspection_async_cb (GUPnPServiceInfo *info, ++ GUPnPServiceIntrospection *introspection, ++ const GError *error, ++ gpointer user_data) ++{ ++ GetIntrospectionAsyncData *data = user_data; ++ data->introspection = introspection; ++ if (data->error) ++ *data->error = g_error_copy (error); ++ g_main_loop_quit (data->loop); ++} ++ ++static GUPnPServiceIntrospection * ++_gupnp_service_info_get_introspection (GUPnPServiceInfo *info, ++ GError **error) ++{ ++ GetIntrospectionAsyncData data; ++ GMainContext *context; ++ ++ context = g_main_context_new (); ++ data.loop = g_main_loop_new (context, FALSE); ++ data.error = error; ++ ++ g_main_context_push_thread_default (context); ++ ++ gupnp_service_info_get_introspection_async (info, ++ get_introspection_async_cb, ++ &data); ++ ++ g_main_loop_run (data.loop); ++ ++ g_main_context_pop_thread_default (context); ++ ++ g_main_loop_unref (data.loop); ++ g_main_context_unref (context); ++ ++ return data.introspection; ++} ++ + static gboolean prv_get_av_service_states_values(GUPnPServiceProxy *av_proxy, + GVariant **mpris_tp_speeds, + GPtrArray **upnp_tp_speeds, + double *min_rate, + double *max_rate, + gboolean *can_get_byte_pos) + { + const GUPnPServiceStateVariableInfo *svi; + const GUPnPServiceActionInfo *sai; + GUPnPServiceIntrospection *introspection; + GError *error = NULL; + GVariant *speeds = NULL; + GList *allowed_values; + gpointer weak_ref = NULL; + gboolean device_alive = TRUE; + + /* TODO: this weak_ref hack is needed as + gupnp_service_info_get_introspection iterates the main loop. + This can result in our device getting deleted before this + function returns. Ultimately, this code needs to be re-written + to use gupnp_service_info_get_introspection_async but this cannot + really be done until GUPnP provides a way to cancel this function. */ + + weak_ref = av_proxy; + g_object_add_weak_pointer(G_OBJECT(av_proxy), &weak_ref); + +- introspection = gupnp_service_info_get_introspection( ++ introspection = _gupnp_service_info_get_introspection( + GUPNP_SERVICE_INFO(av_proxy), + &error); + +@@ -2215,7 +2262,7 @@ static gboolean prv_get_rc_service_states_values(GUPnPServiceProxy *rc_proxy, + weak_ref = rc_proxy; + g_object_add_weak_pointer(G_OBJECT(rc_proxy), &weak_ref); + +- introspection = gupnp_service_info_get_introspection( ++ introspection = _gupnp_service_info_get_introspection( + GUPNP_SERVICE_INFO(rc_proxy), + &error); + +diff --git c/libdleyna/renderer/upnp.c i/libdleyna/renderer/upnp.c +index 17cbda7..068912b 100644 +--- c/libdleyna/renderer/upnp.c ++++ i/libdleyna/renderer/upnp.c +@@ -243,8 +243,8 @@ static void prv_server_unavailable_cb(GUPnPControlPoint *cp, + + udn = gupnp_device_info_get_udn((GUPnPDeviceInfo *)proxy); + +- ip_address = gupnp_context_get_host_ip( +- gupnp_control_point_get_context(cp)); ++ ip_address = gssdp_client_get_host_ip( ++ GSSDP_CLIENT(gupnp_control_point_get_context(cp))); + + if (!udn || !ip_address) + goto on_error; |