1
0
mirror of https://github.com/mpv-player/mpv synced 2024-12-27 17:42:17 +00:00
mpv/osdep/macosx_touchbar.h
der richter 7f8d069087 mac: only update touch bar items when necessary
the slider on the touch bar was always updated when any of the related
properties changed their value. this is partially dependent on the
refresh rate of the video, in the case of time-pos. too many updates to
touch bar impact the render performance.

to prevent this we only update the slider when necessary, when the touch
bar or the touch bar item is visible. the touch bar items only need a
granularity of seconds without any decimals, but the time-pos property
provides a granularity with decimals. we floor those values and only
update the touch bar items when we have at least a 1 second difference.
we also check for the visibility of the touch bar and its items.

Fixes #8477
2021-02-13 15:51:32 +01:00

47 lines
1.9 KiB
Objective-C

/*
* This file is part of mpv.
*
* mpv is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* mpv is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with mpv. If not, see <http://www.gnu.org/licenses/>.
*/
#import <Cocoa/Cocoa.h>
#import "osdep/macosx_application_objc.h"
#define BASE_ID @"io.mpv.touchbar"
static NSTouchBarCustomizationIdentifier customID = BASE_ID;
static NSTouchBarItemIdentifier seekBar = BASE_ID ".seekbar";
static NSTouchBarItemIdentifier play = BASE_ID ".play";
static NSTouchBarItemIdentifier nextItem = BASE_ID ".nextItem";
static NSTouchBarItemIdentifier previousItem = BASE_ID ".previousItem";
static NSTouchBarItemIdentifier nextChapter = BASE_ID ".nextChapter";
static NSTouchBarItemIdentifier previousChapter = BASE_ID ".previousChapter";
static NSTouchBarItemIdentifier cycleAudio = BASE_ID ".cycleAudio";
static NSTouchBarItemIdentifier cycleSubtitle = BASE_ID ".cycleSubtitle";
static NSTouchBarItemIdentifier currentPosition = BASE_ID ".currentPosition";
static NSTouchBarItemIdentifier timeLeft = BASE_ID ".timeLeft";
struct mpv_event;
@interface TouchBar : NSTouchBar <NSTouchBarDelegate>
-(void)processEvent:(struct mpv_event *)event;
@property(nonatomic, retain) Application *app;
@property(nonatomic, retain) NSDictionary *touchbarItems;
@property(nonatomic, assign) double duration;
@property(nonatomic, assign) double position;
@property(nonatomic, assign) int pause;
@end