output/httpd: move code to _has_clients()
This commit is contained in:
		| @@ -53,6 +53,31 @@ httpd_output_quark(void) | |||||||
| 	return g_quark_from_static_string("httpd_output"); | 	return g_quark_from_static_string("httpd_output"); | ||||||
| } | } | ||||||
|  |  | ||||||
|  | /** | ||||||
|  |  * Check whether there is at least one client. | ||||||
|  |  * | ||||||
|  |  * Caller must lock the mutex. | ||||||
|  |  */ | ||||||
|  | G_GNUC_PURE | ||||||
|  | static bool | ||||||
|  | httpd_output_has_clients(const struct httpd_output *httpd) | ||||||
|  | { | ||||||
|  | 	return httpd->clients != NULL; | ||||||
|  | } | ||||||
|  |  | ||||||
|  | /** | ||||||
|  |  * Check whether there is at least one client. | ||||||
|  |  */ | ||||||
|  | G_GNUC_PURE | ||||||
|  | static bool | ||||||
|  | httpd_output_lock_has_clients(const struct httpd_output *httpd) | ||||||
|  | { | ||||||
|  | 	g_mutex_lock(httpd->mutex); | ||||||
|  | 	bool result = httpd_output_has_clients(httpd); | ||||||
|  | 	g_mutex_unlock(httpd->mutex); | ||||||
|  | 	return result; | ||||||
|  | } | ||||||
|  |  | ||||||
| static void | static void | ||||||
| httpd_listen_in_event(int fd, const struct sockaddr *address, | httpd_listen_in_event(int fd, const struct sockaddr *address, | ||||||
| 		      size_t address_length, int uid, void *ctx); | 		      size_t address_length, int uid, void *ctx); | ||||||
| @@ -475,13 +500,8 @@ httpd_output_play(struct audio_output *ao, const void *chunk, size_t size, | |||||||
| 		  GError **error) | 		  GError **error) | ||||||
| { | { | ||||||
| 	struct httpd_output *httpd = (struct httpd_output *)ao; | 	struct httpd_output *httpd = (struct httpd_output *)ao; | ||||||
| 	bool has_clients; |  | ||||||
|  |  | ||||||
| 	g_mutex_lock(httpd->mutex); | 	if (httpd_output_lock_has_clients(httpd)) { | ||||||
| 	has_clients = httpd->clients != NULL; |  | ||||||
| 	g_mutex_unlock(httpd->mutex); |  | ||||||
|  |  | ||||||
| 	if (has_clients) { |  | ||||||
| 		bool success; | 		bool success; | ||||||
|  |  | ||||||
| 		success = httpd_output_encode_and_play(httpd, chunk, size, | 		success = httpd_output_encode_and_play(httpd, chunk, size, | ||||||
| @@ -502,11 +522,7 @@ httpd_output_pause(struct audio_output *ao) | |||||||
| { | { | ||||||
| 	struct httpd_output *httpd = (struct httpd_output *)ao; | 	struct httpd_output *httpd = (struct httpd_output *)ao; | ||||||
|  |  | ||||||
| 	g_mutex_lock(httpd->mutex); | 	if (httpd_output_lock_has_clients(httpd)) { | ||||||
| 	bool has_clients = httpd->clients != NULL; |  | ||||||
| 	g_mutex_unlock(httpd->mutex); |  | ||||||
|  |  | ||||||
| 	if (has_clients) { |  | ||||||
| 		static const char silence[1020]; | 		static const char silence[1020]; | ||||||
| 		return httpd_output_play(ao, silence, sizeof(silence), | 		return httpd_output_play(ao, silence, sizeof(silence), | ||||||
| 					 NULL) > 0; | 					 NULL) > 0; | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user
	 Max Kellermann
					Max Kellermann