@@ -318,26 +318,45 @@ function Page() {
318
318
319
319
const displayTargets = useQuery ( ( ) => ( {
320
320
...listDisplaysWithThumbnails ,
321
- enabled : hasOpenedDisplayMenu ( ) ,
322
321
refetchInterval : false ,
323
322
} ) ) ;
324
323
325
324
const windowTargets = useQuery ( ( ) => ( {
326
325
...listWindowsWithThumbnails ,
327
- enabled : hasOpenedWindowMenu ( ) ,
328
326
refetchInterval : false ,
329
327
} ) ) ;
330
328
329
+ const screens = useQuery ( ( ) => listScreens ) ;
330
+ const windows = useQuery ( ( ) => listWindows ) ;
331
+
331
332
const hasDisplayTargetsData = ( ) => displayTargets . status === "success" ;
332
333
const hasWindowTargetsData = ( ) => windowTargets . status === "success" ;
333
334
334
- const displayTargetsData = createMemo ( ( ) =>
335
- hasDisplayTargetsData ( ) ? displayTargets . data : undefined ,
336
- ) ;
335
+ const existingDisplayIds = createMemo ( ( ) => {
336
+ const currentScreens = screens . data ;
337
+ if ( ! currentScreens ) return undefined ;
338
+ return new Set ( currentScreens . map ( ( screen ) => screen . id ) ) ;
339
+ } ) ;
337
340
338
- const windowTargetsData = createMemo ( ( ) =>
339
- hasWindowTargetsData ( ) ? windowTargets . data : undefined ,
340
- ) ;
341
+ const displayTargetsData = createMemo ( ( ) => {
342
+ if ( ! hasDisplayTargetsData ( ) ) return undefined ;
343
+ const ids = existingDisplayIds ( ) ;
344
+ if ( ! ids ) return displayTargets . data ;
345
+ return displayTargets . data ?. filter ( ( target ) => ids . has ( target . id ) ) ;
346
+ } ) ;
347
+
348
+ const existingWindowIds = createMemo ( ( ) => {
349
+ const currentWindows = windows . data ;
350
+ if ( ! currentWindows ) return undefined ;
351
+ return new Set ( currentWindows . map ( ( win ) => win . id ) ) ;
352
+ } ) ;
353
+
354
+ const windowTargetsData = createMemo ( ( ) => {
355
+ if ( ! hasWindowTargetsData ( ) ) return undefined ;
356
+ const ids = existingWindowIds ( ) ;
357
+ if ( ! ids ) return windowTargets . data ;
358
+ return windowTargets . data ?. filter ( ( target ) => ids . has ( target . id ) ) ;
359
+ } ) ;
341
360
342
361
const displayMenuLoading = ( ) =>
343
362
! hasDisplayTargetsData ( ) &&
@@ -430,8 +449,6 @@ function Page() {
430
449
else commands . closeTargetSelectOverlays ( ) ;
431
450
} ) ;
432
451
433
- const screens = useQuery ( ( ) => listScreens ) ;
434
- const windows = useQuery ( ( ) => listWindows ) ;
435
452
const cameras = useQuery ( ( ) => listVideoDevices ) ;
436
453
const mics = useQuery ( ( ) => listAudioDevices ) ;
437
454
0 commit comments