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"); | ||||
| } | ||||
|  | ||||
| /** | ||||
|  * 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 | ||||
| httpd_listen_in_event(int fd, const struct sockaddr *address, | ||||
| 		      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) | ||||
| { | ||||
| 	struct httpd_output *httpd = (struct httpd_output *)ao; | ||||
| 	bool has_clients; | ||||
|  | ||||
| 	g_mutex_lock(httpd->mutex); | ||||
| 	has_clients = httpd->clients != NULL; | ||||
| 	g_mutex_unlock(httpd->mutex); | ||||
|  | ||||
| 	if (has_clients) { | ||||
| 	if (httpd_output_lock_has_clients(httpd)) { | ||||
| 		bool success; | ||||
|  | ||||
| 		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; | ||||
|  | ||||
| 	g_mutex_lock(httpd->mutex); | ||||
| 	bool has_clients = httpd->clients != NULL; | ||||
| 	g_mutex_unlock(httpd->mutex); | ||||
|  | ||||
| 	if (has_clients) { | ||||
| 	if (httpd_output_lock_has_clients(httpd)) { | ||||
| 		static const char silence[1020]; | ||||
| 		return httpd_output_play(ao, silence, sizeof(silence), | ||||
| 					 NULL) > 0; | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 Max Kellermann
					Max Kellermann