Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit2f0e4bc

Browse files
committed
Fix stuck session issue and reduce logging spam
1 parent07de1a6 commit2f0e4bc

File tree

1 file changed

+19
-6
lines changed

1 file changed

+19
-6
lines changed

‎src/core/utils/win32/media.py

Lines changed: 19 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -173,13 +173,18 @@ def _on_media_properties_changed(self, session: Session, args: MediaPropertiesCh
173173
ifDEBUG:
174174
self._log.debug('MediaCallback: _on_media_properties_changed')
175175
try:
176-
asyncio.get_event_loop()
176+
# Only for the initial timer based update, because it is called from an event loop
177+
asyncio.create_task(self._update_media_properties(session))
177178
exceptRuntimeError:
178179
withself._media_info_lock:
179180
self._event_loop.run_until_complete(self._update_media_properties(session))
180-
else:
181-
# Only for the initial timer based update, because it is called from an event loop
182-
asyncio.create_task(self._update_media_properties(session))
181+
182+
ifself._media_infoandself._is_media_info_empty(self._media_info):
183+
sessions=self._session_manager.get_sessions()
184+
185+
# If current session isn't in the list of sessions, switch the session
186+
ifnotany(self._are_same_sessions(sessions[i],self._current_session)foriinrange(sessions.size)):
187+
self.switch_session(1)
183188

184189
@_current_session_only
185190
asyncdef_update_media_properties(self,session:Session):
@@ -244,6 +249,12 @@ async def get_thumbnail(thumbnail_stream_reference: IRandomAccessStreamReference
244249
# Close the stream
245250
readable_stream.close()
246251

252+
@staticmethod
253+
def_is_media_info_empty(media_info:dict[str,Any])->bool:
254+
keys= ['album_artist','album_title','album_track_count','artist','playback_type','subtitle','title','track_number']
255+
# Check if all keys have 'zero' values
256+
returnall(notmedia_info.get(key)forkeyinkeys)
257+
247258
def_are_same_sessions(self,session1:Session,session2:Session)->bool:
248259
returnsession1.source_app_user_model_id==session2.source_app_user_model_id
249260

@@ -262,9 +273,11 @@ def switch_session(self, direction: int):
262273
idx= (current_session_idx+direction)%len(sessions)
263274
ifself._are_same_sessions(sessions[idx],self._current_session):
264275
return
265-
self._log.info(f"Switching to session{idx} ({sessions[idx].source_app_user_model_id})")
276+
ifDEBUG:
277+
self._log.info(f"Switching to session{idx} ({sessions[idx].source_app_user_model_id})")
266278
self._current_session=sessions[idx]
267-
self._on_current_session_changed(self._session_manager,None,is_overridden=True)
279+
280+
self._on_current_session_changed(self._session_manager,None,is_overridden=True)
268281

269282
defplay_pause(self):
270283
withself._current_session_lock:

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp