From 1e96bee0ce3c52f4774b605abcc818707ead8784 Mon Sep 17 00:00:00 2001 From: Derk-Jan Hartman Date: Sat, 15 Nov 2003 22:42:16 +0000 Subject: [PATCH] * New OSX controller (iTunes style) - Drag and drop implemented - still need new sliders and remove the titlebar. * revert the mozilla plugin changes. i will build a seperate module for that * simplified previous/next (only playlist, people with chapters and titles will have to use the menu * Moved the disable screensaver from interface to vout. --- .../English.lproj/MainMenu.nib/classes.nib | 10 +- .../English.lproj/MainMenu.nib/info.nib | 8 +- .../English.lproj/MainMenu.nib/objects.nib | Bin 48522 -> 50644 bytes extras/MacOSX/Resources/back.png | Bin 494 -> 0 bytes extras/MacOSX/Resources/begin.png | Bin 568 -> 0 bytes extras/MacOSX/Resources/display.png | Bin 0 -> 881 bytes extras/MacOSX/Resources/display_slider.png | Bin 0 -> 224 bytes extras/MacOSX/Resources/display_track.png | Bin 0 -> 277 bytes extras/MacOSX/Resources/end.png | Bin 579 -> 0 bytes extras/MacOSX/Resources/forw.png | Bin 481 -> 0 bytes extras/MacOSX/Resources/fullscreen_active.png | Bin 0 -> 1448 bytes extras/MacOSX/Resources/fullscreen_blue.png | Bin 0 -> 1533 bytes extras/MacOSX/Resources/list.png | Bin 514 -> 0 bytes extras/MacOSX/Resources/next_active.png | Bin 0 -> 1317 bytes extras/MacOSX/Resources/next_blue.png | Bin 0 -> 1308 bytes extras/MacOSX/Resources/pause.png | Bin 1649 -> 2837 bytes extras/MacOSX/Resources/pause_blue.png | Bin 0 -> 2947 bytes extras/MacOSX/Resources/play.png | Bin 1000 -> 3021 bytes extras/MacOSX/Resources/play_blue.png | Bin 0 -> 3141 bytes .../Resources/playlistdrawer_active.png | Bin 0 -> 1337 bytes .../MacOSX/Resources/playlistdrawer_blue.png | Bin 0 -> 1405 bytes extras/MacOSX/Resources/prefs.png | Bin 742 -> 0 bytes extras/MacOSX/Resources/previous_active.png | Bin 0 -> 1308 bytes extras/MacOSX/Resources/previous_blue.png | Bin 0 -> 1326 bytes .../MacOSX/Resources/skip_forward_active.png | Bin 0 -> 2231 bytes extras/MacOSX/Resources/skip_forward_blue.png | Bin 0 -> 2328 bytes .../MacOSX/Resources/skip_previous_active.png | Bin 0 -> 2256 bytes .../MacOSX/Resources/skip_previous_blue.png | Bin 0 -> 2388 bytes extras/MacOSX/Resources/slow.png | Bin 603 -> 0 bytes extras/MacOSX/Resources/stop.png | Bin 547 -> 1158 bytes extras/MacOSX/Resources/stop_blue.png | Bin 0 -> 1178 bytes extras/MacOSX/Resources/vlc_hg.png | Bin 9379 -> 0 bytes extras/MacOSX/Resources/volume_high.png | Bin 0 -> 527 bytes extras/MacOSX/Resources/volume_low.png | Bin 0 -> 267 bytes extras/MacOSX/Resources/volumeslider_blue.png | Bin 0 -> 704 bytes .../MacOSX/Resources/volumeslider_normal.png | Bin 0 -> 686 bytes extras/MacOSX/Resources/volumetrack.png | Bin 0 -> 284 bytes extras/MacOSX/vlc.pbproj/project.pbxproj | 589 +++++++++++++----- modules/gui/macosx/controls.m | 139 ++--- modules/gui/macosx/intf.h | 12 +- modules/gui/macosx/intf.m | 87 ++- modules/gui/macosx/misc.h | 22 +- modules/gui/macosx/misc.m | 167 ++++- modules/gui/macosx/playlist.m | 3 +- modules/gui/macosx/vout.h | 8 +- modules/gui/macosx/vout.m | 260 ++------ 46 files changed, 777 insertions(+), 528 deletions(-) delete mode 100755 extras/MacOSX/Resources/back.png delete mode 100755 extras/MacOSX/Resources/begin.png create mode 100644 extras/MacOSX/Resources/display.png create mode 100644 extras/MacOSX/Resources/display_slider.png create mode 100644 extras/MacOSX/Resources/display_track.png delete mode 100755 extras/MacOSX/Resources/end.png delete mode 100755 extras/MacOSX/Resources/forw.png create mode 100644 extras/MacOSX/Resources/fullscreen_active.png create mode 100644 extras/MacOSX/Resources/fullscreen_blue.png delete mode 100755 extras/MacOSX/Resources/list.png create mode 100644 extras/MacOSX/Resources/next_active.png create mode 100644 extras/MacOSX/Resources/next_blue.png create mode 100644 extras/MacOSX/Resources/pause_blue.png create mode 100644 extras/MacOSX/Resources/play_blue.png create mode 100644 extras/MacOSX/Resources/playlistdrawer_active.png create mode 100644 extras/MacOSX/Resources/playlistdrawer_blue.png delete mode 100755 extras/MacOSX/Resources/prefs.png create mode 100644 extras/MacOSX/Resources/previous_active.png create mode 100644 extras/MacOSX/Resources/previous_blue.png create mode 100644 extras/MacOSX/Resources/skip_forward_active.png create mode 100644 extras/MacOSX/Resources/skip_forward_blue.png create mode 100644 extras/MacOSX/Resources/skip_previous_active.png create mode 100644 extras/MacOSX/Resources/skip_previous_blue.png delete mode 100644 extras/MacOSX/Resources/slow.png create mode 100644 extras/MacOSX/Resources/stop_blue.png delete mode 100755 extras/MacOSX/Resources/vlc_hg.png create mode 100644 extras/MacOSX/Resources/volume_high.png create mode 100644 extras/MacOSX/Resources/volume_low.png create mode 100644 extras/MacOSX/Resources/volumeslider_blue.png create mode 100644 extras/MacOSX/Resources/volumeslider_normal.png create mode 100644 extras/MacOSX/Resources/volumetrack.png diff --git a/extras/MacOSX/Resources/English.lproj/MainMenu.nib/classes.nib b/extras/MacOSX/Resources/English.lproj/MainMenu.nib/classes.nib index 8d98ec9000..c91bfda6ef 100644 --- a/extras/MacOSX/Resources/English.lproj/MainMenu.nib/classes.nib +++ b/extras/MacOSX/Resources/English.lproj/MainMenu.nib/classes.nib @@ -1,6 +1,7 @@ { IBClasses = ( {CLASS = FirstResponder; LANGUAGE = ObjC; SUPERCLASS = NSObject; }, + {CLASS = MPSlider; LANGUAGE = ObjC; SUPERCLASS = NSSlider; }, { ACTIONS = {showPanel = id; }; CLASS = VLAboutBox; @@ -16,6 +17,8 @@ }, {CLASS = VLBrushedMetalImageView; LANGUAGE = ObjC; SUPERCLASS = NSImageView; }, {CLASS = VLCApplication; LANGUAGE = ObjC; SUPERCLASS = NSApplication; }, + {CLASS = VLCControllerView; LANGUAGE = ObjC; SUPERCLASS = NSView; }, + {CLASS = VLCControllerWindow; LANGUAGE = ObjC; SUPERCLASS = NSWindow; }, { ACTIONS = { backward = id; @@ -66,13 +69,13 @@ CLASS = VLCMain; LANGUAGE = ObjC; OUTLETS = { - "o_btn_faster" = id; + "o_btn_ff" = id; + "o_btn_fullscreen" = id; "o_btn_next" = id; "o_btn_play" = id; "o_btn_playlist" = id; - "o_btn_prefs" = id; "o_btn_prev" = id; - "o_btn_slower" = id; + "o_btn_rewind" = id; "o_btn_stop" = id; "o_controls" = id; "o_dmi_mute" = id; @@ -171,6 +174,7 @@ "o_mu_window" = id; "o_playlist" = id; "o_prefs" = id; + "o_scrollfield" = id; "o_timefield" = id; "o_timeslider" = id; "o_volumeslider" = id; diff --git a/extras/MacOSX/Resources/English.lproj/MainMenu.nib/info.nib b/extras/MacOSX/Resources/English.lproj/MainMenu.nib/info.nib index e5b1101ac5..f8edbafc79 100644 --- a/extras/MacOSX/Resources/English.lproj/MainMenu.nib/info.nib +++ b/extras/MacOSX/Resources/English.lproj/MainMenu.nib/info.nib @@ -3,7 +3,7 @@ IBDocumentLocation - 53 61 772 722 0 0 1280 1002 + 27 143 356 496 0 0 1280 1002 IBEditorPositions 1617 @@ -16,13 +16,11 @@ IBFramework Version 349.0 IBLockedObjects - - 977 - + IBOpenObjects + 29 21 - 1647 IBSystem Version 7C107 diff --git a/extras/MacOSX/Resources/English.lproj/MainMenu.nib/objects.nib b/extras/MacOSX/Resources/English.lproj/MainMenu.nib/objects.nib index edae4e560c3d64838c68d4e7fae4bde7f1f6c18f..edaa16260843325f407223f16c07057c8f82315e 100644 GIT binary patch literal 50644 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 literal 48522 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 diff --git a/extras/MacOSX/Resources/back.png b/extras/MacOSX/Resources/back.png deleted file mode 100755 index bbe96dc98456607f778f33c9040baa75e27bf3cf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 494 zcmVQaRt(N89NhW<0mQ(k#%XQF%fqC_ zrV9{249d)^ina`T8iJAv00G3nAfqYF#lRr##%}-+KtL1h)m?z3iLoO<0D(+)Pyvzd kA^-sdwox8TN&o~H0C$=R{pN0rxBvhE07*qoM6N<$f`aeayZ`_I diff --git a/extras/MacOSX/Resources/begin.png b/extras/MacOSX/Resources/begin.png deleted file mode 100755 index 4f3ddbbd563a7c1a27dd2bc19c439f367eca83ce..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 568 zcmV-80>}M{P)FNO^G%!wGF;8AiX?ED&;Xz((U3i2ED?91y>^4ze(bw8>hLLlJkUUvvK3ZwT z%+RpC!_3mvl%}s+a(!2De$?CElBKWh@9%Aek-NpoMqq93@bExdXGmmmXMv5^+uePY zpwimjcaNK@yTc$qPOrMZiJhiYpJxlE=*hO?e0))d3}+a=j!ac!^bH{RzF*6H&tUx zW^^M$QCxO|Z-tPivA1S?hZ{RfS95^s?CpV-puWb+J5^&|d4=ff>_%d6AwWH zj9_43dhY4s7*cU7>CgZF_Re*Io0x=!gH5=(H=8RfPZm^GR<>4FKCB_Z+RVl(OBrHn(@%K0X;q&wNOYE!vzmLZwoS8*{+gv=|WWPfFlm-TQW_^8gW_EUK6UP2! z4+0Hl2z{t8VEXs*vHIcX=i?>qYJP}({rLBIHUr}kCZ9d`9z9axQCj50v&ZHRPfpGn zo}R^=6(T%`SpLY*XsG}D>+FZ8r_Bo-xmoUk)az9CI&_A+L`-O$+|3;E%ZT}7#v@tQ zX8u3F*|l2#8!^n@!*k#Xk5+Fl15*djDigf(3Ir|nsspfT-;0*`=$&tgYIt~MhEjs+K4Y`EG?h7>~~fa#y56wl&>j;8s* z!2R<7|Nr6z#mn6eYDjo7)PzYHyk%k$xV*pq|F$MRU*@^ird)0Z0~i);;qu)4e;Y`u zU*3NDrcDL&SY&6JMG5scEe!b7bV*C&Y||w@2L{6?mUZ_mQqLVccT!|5;I-?!f( zA^E>w?y4~tTl}NH$3M((o%+|>So!!$dHcHXjO-b6SvVBjmIQ@!b=WrCVCyh#n2~F8 v!tI~}Q+?wPGlBQak7OPG@ThPIBryC6-7Nld0hbCedoXyq`njxgN@xNA#D6~P literal 0 HcmV?d00001 diff --git a/extras/MacOSX/Resources/display_slider.png b/extras/MacOSX/Resources/display_slider.png new file mode 100644 index 0000000000000000000000000000000000000000..423f074ee038cc15f88bc31b987b7753bbd6a3cc GIT binary patch literal 224 zcmeAS@N?(olHy`uVBq!ia0vp^>_E)Q!3HEdXMMW?q&N#aB8wRqxP?KOkzv*x37{ZL zx}&cn1H+BiUu8sA0r?8a9znhg43Ty~{GWm0%^U`X7I6lKl-WQvGZ+{Q^cfh0KR)=Z z7y(op=IP=XQgJKk$N&HK%pBa@-2d*ESBOd+KElA%A?VW4+5IQIp~+M_tufR3w1Qg$ zLz0N7aGUo6Z3Yg7W#Rhw4U#4^yky}}V4Lw%L6}c2n){f6VFLp*!=-MsQza*(bAdK6 Nc)I$ztaD0e0su5)KH&fW literal 0 HcmV?d00001 diff --git a/extras/MacOSX/Resources/display_track.png b/extras/MacOSX/Resources/display_track.png new file mode 100644 index 0000000000000000000000000000000000000000..278c9065b92517f22dd0ad96cb26fe964dc44123 GIT binary patch literal 277 zcmeAS@N?(olHy`uVBq!ia0vp^^MROygAGVNuh5kSQk(@Ik;M!Q+`=Ht$S`Y;1W=GA z-O<;Pf#JsMuQDR5fP95yk04(LhDbXg{?EYhW)1^Gi#P*A%50#T84L^t`V0)hA0K>H zi~y?b_H=O!skoISA}ajvyaAUR-cfr(?z54UO= z7_Wo%8biy~!;2F{F06jS3^XTT`gev6&kbjNa%0@j_B&^#?I64@$tRI$?NUyr?R-Y!^lWva*CRwIaXvxV{omxzCvGY zAwW=9a(_2eV{eI+L0oC+?CsFn-acArptQbxkeYOjnA+dswZO$%b%9@bhKHP`aD|XT zT4(C(?B?m}L0xRY%g@%_-|p}5kfg1ctF)l4vs`zCl&Z6TmZB0eLg(q~YJ-n&gph`v zsJ+L`FHKwR?(e|I%af(AIp%Ny00001bW%=J06^y0W&i*HrAb6VRCwBAP+$N8Q4bJl z01!Y7Zrngh+cE@5G64h-gG{hL14A@FhXw-!7eD|pD9W1ZGVm&yOSm&A0|XEQD`O;| zv79H1YM71+Kmaia8QPc_IkIs&Ig6_U1Q3I(K0C9Xyrf#FOOyye05RB^1w=4NTiE;h zFoXjH5Ce~t7XyQLke?U>Lm)r^F~n#BZEz4229mY_0mL8xvfD}vL|Ov`7yx*O5VxS7 R9((`*002ovPDHLkV1m+f`E~#R diff --git a/extras/MacOSX/Resources/forw.png b/extras/MacOSX/Resources/forw.png deleted file mode 100755 index fca9e9f518f05a84d3185080bcc0dcc8c345be1b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 481 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 diff --git a/extras/MacOSX/Resources/next_active.png b/extras/MacOSX/Resources/next_active.png new file mode 100644 index 0000000000000000000000000000000000000000..aaa1c070048e547319994cf50f81f5a6861a2e28 GIT binary patch literal 1317 zcmV+=1={+FP)z^Q>-8KIssI20AY({UO#lE{J^%n&{{R5&oB#lX7XScc zn*adVm;eAUF8}}&@!<0zSO5S7n@L1LRCwBA{Qv(y0}L=SG711Gejw%nVs?-a1N8vN zqMtzg1&BWa?fn3g00`*#1$n>Tj~2?;$rbLPx%fB<3v$#QaX%9@*-C(6mmCF$zuN~x%-Fi1*B zG5{SyH5dH-`s2LNe;L@c_47+ykdj96ko6g_Af3E-tAQl-J8OcwdJ~`;=>PhP9=_5IS zkqSuwVG1neF)}eSXlZFN+`4^B^6S^H4&vhC2LS?z2^cRDzyxWirmoJw%*@EZ#LNt& znSeASm=DA6-n~KL;}d5D;Tm`}a>87$OWzAVomT#K;Vxk#KWM3&V*MCs4$2iG%dEG&cjyK@wwR1UrD4iJ1Wy z0t^Cz0t_H~LG}X#5EC$gfU+YC8w)GgaeOirvuDp?`1AWOUU6oS z_^+RkPz6~IHj|lw6`0V!eEq@zjD7}A4o*<)uz>6b2p}eYetvEc4{R|EGclp^LBR?% z41^CJJjhU8Q_b-5)l1ysED&*K7N8?oS%8=soEAQQ`pEF|h`0?Wh!`Clg8Q#Bt&+zQo zGX`L807nN02L}Ty8>9#V*$)svEZp4OykJKFeGf7SXe9%v0Q>&!8^dRy0Wk36$4`b| zzkVUoK2Xi;*RQdPzj*Ny98Dm35FZ3Vjs+Hi5Jw}G03iDT0*Hx=i;D;52#_m5;N!=S z3?G2_@83Ug{Qv(yh=D*XC@9EKQc}WTZEcNJ+|khyY#uuYI|BzN2Ll%;Com0gfcYSY zuyL?4u(3g+17try0I>jr1`-m$!~+6fzI*|dZlF>WCD(&fHV}jIcxGlM12h(Kih~@% z!OnrR1c8+wAo~FVhy~~(E}({gfB*eu0{IFUUKkF5Sr!xIk^LbN!@*SG+%9sxP@ zAIN@y00KGUGqAw;1}w*Uq@<*Pu7|}NYSCR*TE?KQt&L$AHgS;7(y}t3BiIl{C8U~$ z^MUmU1IS*G{Qv>P0<1UgC@U*}yL$C153mA*H~_8a1pz}N1FSy6F3!kcWM~NX2P2Ns z|Mu8@7=ri`@)3_;F=SGS;@o@{j97kXy!ri`Sa%)?%%)v z8)PrYet-Z1wn;|0LFoliwYg;_^OhXE8SAPtO+)TvEDY2eYLM+}!QUuFPS z=YN51m`|3LmJ@){(F71cjL?>q7*J6zFo<%2p}}$M)-9G-uU;{OG*SzIJR~M2_E$|! z?T>+h!4Fkc)yY7y$v~-B00G2^+`I#V0ANYy0rb5kkgY`RmKCT01GMirFjwpVvNyma b00ImE@t?7wF)o*Y00000NkvXXu0mjfC#*3M literal 0 HcmV?d00001 diff --git a/extras/MacOSX/Resources/next_blue.png b/extras/MacOSX/Resources/next_blue.png new file mode 100644 index 0000000000000000000000000000000000000000..54647443cb577d23b026703cde4ead774e2836f3 GIT binary patch literal 1308 zcmV+%1>^dOP)z^Q>-8KIssI20AY({UO#lE{J^%n&{{R5&oB#lX7XScc zn*adVm;eAUF8}}&@!<0zSO5S7l1W5CRCwBA{Qv(y0}L=SG711Gejw%nVs?-a1N8vN zqMtzg1&BWa?fn3g00`*#1$n>Tj~2?;$rbLPx%fB<3v$#QaX%9@*-C-REOC$R|YNip%OGB9#U zGB7Z)P%kk4|6yhQ`dpRc(=AmFfs1wm0s^v6o;;Zkl(`2GK#Y-*k>aeZtPvdilI3i& zE|Sb5dPq7MDGYsNGyX$)j10eCUu5|5VE1!|uP-`(|NgxKAb?n8WMm{iefs3UDyA>V zE~$@Z@qY>&!3d3Ss40w0U_KL2;J2tg!`oLcBxU}6bPyL8KL`*&Ou%@N047L74l#8G zR#qk;W<b& znp0Ssfeoktff-TwhgLK(Jil`sO$~l=7@HMt7Q_*6zW-zR#3IQ6vKM4OKmaiT69_0f zvaoToffXY#6AJ&|-=7R8HceqTvtt$m6Z3DP#9?fZ1K5EyHy1O*>+k;=o__hqz{Um6 zcq}0M0Ro7HpP!!_#A62r88CcM6BJVNU}6GcMuz(r4=}ucew)E5x`csWL<*-kGcyAN z7Y7r>NFez2=Rd>akAE31zx)GZA&KWd*luQ^!GHfD5+)Nf zBiKR^`1Ix}!GQ9u&pWz3P@#W`#hF72eF}w#x0}~rCL^wbi{(<#? z><0)S7H)2CUWg-@z`kb!IvrGqKL7F;>~a`*|KlISpI-<^G5`C^aP!S~JmUWuF1-HB z0P@E_pn)KVa`P}F6f$RqeAQmnzE=WkQLLBf5=)mi5|1v!P`VS?${sFRKPGaX1 zVNee)V&IWfV)(OfIaYC|{mU7+kSv9TFg)W!-3_uIAb?mnI5@x|!3NAuAZzcu|Hl9- z)cJUsQ5*qsB;#L31|elV2Ho&N23CmMaf-9BFe3TjLEFUWp?0Ac|aohOWpj1nL2*!}zO?Q^W$ zdZsv|k+k{?$pA)#5QzEp@@WRH7k7Ufxx0J^*$)sv;P%9?U%%>(A3t8O_vC55-*PI< zTxvQD98z)&j4Uh+@Y05i`s+Wm0)y1#e;9r~d&KbN=4A%9M|b`@o11>Jw6vT6jE*LN z0Ahr;ti*r~j@;X~Z|7dPaDn62ty?UwUcF)liczga18gKQh>3~)RZ~;@V_;zLLseCE zGEi(XQ0f&x05Kvr?|>ixSgCjbgUAxdR-$&x3epL SVe1_L0000w=kvUt*K>KlpDa(0pH)#L6aWCK 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 literal 1649 zcmd^9i&xTj6bEgNT5Wo&Q*LXS9l5b$$N9u!a7oAnG{^xJ8;Uk@ zjYfu{z0pWia{M6rJP4%s5qcHoq*+*eGb^2yDW;^d@#$G7MAWoYE>+AeE-h;pb!v@v zaz-kZD^>HFdF?`NN6(yEBU7r@*4O>x$m{Ftwy^6nGC4lGG&DJr!Q#Dpx0;gA$||qa zXcy}r_0CA;J;S5kkp$VCYWi=PT&1>f@;&Sbi_OT#F^k`=u1-wPsx%sfYCir(k);b< zp;8xBh$7N*<~3S}z(|3(japo;TVA1+@mxdWI{JrRj8ED5VU+55-O_R{r?RPgz$qk# z&f+_V#tw{(Q*M@v+PhQo*}X5v&}3#9CEFL95=$@ekE0NCOP!Ii3yV5JPMKDxBQQ(O zcq4-ew4~g!vp#^6A#8aRP0c~2Fu3)SAbh%wM-Zp3rBwJp(D;ximT>A@M3OG%?R)+S zY1oYX0$z=zcksTXtEsC$z2t6nTNgGXulQbF4yP)$=uRXxo7d2G3L0E4Y9tkwdqof= zPhZ5*@~OpKa$&h=IG$B4?sztQ!9Ps=`01q}tXCw#2b&y1q+7WKu!Ies7<_sOmz2*A zNTmMy2Z~)KKI-g;z)_upv2N%@pQt1^RNQ$#j7Jzg7*7qxXV7l(e(^B)d!EGf09JT9|vQMVL9$!h6+jv_KH2Vqep#^b@4Gg3t%UoGVTr{8QDl0qeL%!bLG5q;;g!vu4?25mA9k15Hp}PKVX0Z}82q(_ zG^tV*PG(-k;IcTvh}10qcnU|<^#1*OxS@pt*pm&Mw};Q>|5!jDJWm661pLv}(E&!B z3N7@;Ady~WpV!_N2=|{eGb=u953;eoi$bG0Jv;Xpk!FOphl;kFQ1`>(ug73tnyIF_ zdC1YaOg2~#a)du6kVMbDac@5b1|To5<^`_xGb^Ea$3F51`fG>@Vc8`mVqj>$bEvD#4t^})t3AkxaD==ax>eg`&+*R|n<%|(a_PV8t0SlP z0%_YGSA3TH;D6#Vi>f8{ZMolW@!HE}lVG$1NBE{kQ^lt@YyoTqhGV$6e52=tTdetc zc%lvrF){dHvi-ZuqX+Db!1`+eC(Wlo;69T{B&*fO`{0otl6Ii~bygsNt%xZjl~l_w zRMV-hiMJf4Odp8dxKI&eWuRwoWK|qRQU;;{YTat6L+f?R6Hxl{@7`WLU<05$L!ynD zY6)q@V;sDh8tPB7E zz^(}ijMV8RKLv%*&HUQ+D|AXfDP+^{0D#8-6bNvxlAv3JC(y&_05CK;Z*6)-XA^gX zM1}#tCO@5k05DYv067)_5MQD5DFXnC3jp9}-+i@@0RV&VYXa#TQeTz!Khg(?m;ieA zu^LtJl?@S}f6qY_jk%;KOi$DWV-KpgtuIMV7BOSW)G^;a>Jx+GY>)?Wcsn}*fJEjA zD=RDiuB)rFH!><-wO~Po2^w99!Q)R+BCuYAHyc2$CSCP$K(M4EOY^tlL+{y&0Rfc? zPCTlupk}F4!B0>AG@`8ld5w4?hnG@$@#4i9okLJdON%dDPj8?1(V+VBqaPMqwq4*# z9qx&H?EAz$56~Dd2B6j4p8*vKxghl|R5EQQ0UN?CwOLt8wd$kS>X8mMd+gPJ_WBIH zd^xgJclI*-bO;pHFj`+<@2xW(?Oj}C1_w(m@=8uFX%?CVZpsz(bKX9PwWXKC;I4J;D%u z=v=j|J3UumB&Vp;4l!3yF868 z_(yi0@#*gZ2swcw4E73sO6rS)mK(L?&C0HqblAzbHHRE=v0Snqis(S7t*)kz%SJl3 zV-nR_l}%B6=bP^_p`m}KP=3;}Z6*YU#1k4LB)8|4KMPOl@=U_YeJ_kTIHN!YQwY&PBgM7NwwdWUNHw2Eu zQ&7h_hVDP+1znuAk%e5#34DkL#Xe{mo{)W)mRrrZq*t;udxD$Kb;TdUx*J`>^o=ui z#HXsIE|S*=K*CUrrKMl;Rrd^Se7~>&NTUC14y`bON|XZf@>4>nP3Dl7jo!d{?H8o zMKotP1z1l+>KP`7i4KU&ES4^Yk%rqu23*KV4}$c9KItih9}z^k#aPYp$MFOi>fR*z z?19`^T5`mtJ5Mt{ma>%c>66fZLaTqhh!bW>wuR_>bW8WFVn$u&M-*C$ysfU8hlpS{ zv*@A6?b;t+lKHc2G55j4dpVDjl>Ov~GounCa!ES?MVbC3{QPT90L?Vgwz_qR*f|(6 zY);Cv?lXROFxUJuo4f4BmIGQhU+8#WI2CjkiQMA)XV`6loE7(6jDK#x(;I3vfqP<( zzD!l#v4r3$)!t?=lPR7zZZM8r`k}Dv1YuXGT*DtQQzf>J4Qd9GH2roW+Xz&gO9AcE z>0-#3?f>E!;_Z||&h$;yTURO<;uBr*9@1=QKt}ZFc5K)p&`vOG~BU;>`y{82rsEtoxjdFZGP$S{l3xQHihekUvGw(IH zo`zI^M;lxKXZFl%8o(J0P#EjbGRS1^=zN>@y_lzek4mL|_!9olyQFk*R*tGh1a{o& zZpcRT6-$D&4G*u%)b=KQ)Wix$wGwQcf7AK%=k>qXI3%_q#=N6~6FV>MR=h~~H=>eJ zKWK$xY!*9>Bwn_N`<@(ufFFO_uV53lXB`hTbH}GaVAU^&%HC!0YQb8wVm_umk&ofW zR5+qspDSbp+80P0n#iFA-FIR#rQvqen*a-ClS;yrwq^mp&2MDvx`iBH9?}CyO7*vF zLba5c-C@PY(NavHqDD72;rNceRHo0o%*^3I<|NDh=WMpJ9 zho1Utu>Vt~M6)+V9p{E|$7?6Cu&pb_H$B-d=DzgT zg4>A0L*e-a1%5i5V@`dlZ*7(5P3MI_$av<#N`ocd=42f2x6$IC*E}Qc%CscPVOQu4 zyD58ZpC-8^%?Z-U84k!7`7JEds>WAJWW9No*7GfIxl>5F{b5Nd6plmh z={>^6X*(!uyRC9 zGwDix$R1&TCSd{LM4x!8N~S^QHmq)?aHb$Hkxdry)TVS@_n3^)7tMZB>L^XqoAx8G zD>LQ_@?P|Dxxa-WO-}K>YjETv#OO^JQ8GR_(EWY)U%ePXxD7nFY{DWs`UT0?*LNE& zZ+i6+Bn^;S?}WBquIHv~QYmDLU(#mXJ{oP>XudrFjWDMh`+o3|nR^ROh-B@xb~jdm}1*5mMsl1w({KoUFG)u;d!6kOTw$hZhf0FThM;RlXNzB zIjp@7Qnxg>sku-m~4os3h?0F?^^$%$69nJLX>s5*` zZ}3OIO&F6z6U?-)dK)-jUf zIF)sib0|ZXboM%=)tg8+cU{{s*xmk{)y28n)K`~YBJeAe2uUjHV? z2Zn9|fG8h5bO4}|0D!<80N54!88HA*T>$_;J@lCpsV8A<_V)|_=|#zt9wUH^V)$ic zR%;6D!iQQ|M)7Rj~w#JcGjHi>XW#kM5QRop$lKX0)qvdF#o=KjuarpReeu^!3$^ z^<1p*J-P6c?(g1TF!VJ#;Wa#&Cp;jjt*uq-2R7ckdDGj#&@kCwu<G^9x_yJ6@)xSnO^+_C&23bcabher`Rg`7oxLn<|WMK9US) zzN#4SZ)mk=yV8NThb8CEEgkJ|h_N3Y8QH}z_!Jr%J`>*G%?b;Ph!=^lIga1D5UA%m z6gi&Y7fpVoK)4m-Y)u5NF)i$-bd6a@zLm$xSIrq2wC^8_pil2y!-w- ziOl1ADSLXh4b4rxd1`EIyh4sOUPYyfdiwhlv8Gry*&HC==T1M}n2j`d@dmTU%HbHB z&R7m7{f`Wt7BkQXHNb9vXlQ6?1nm{sQ0t%GTz#wkN#_&7v+#(wRUo=Z$HmL59wN?v z!=Tr537OBRnYd_A>>Eh-yGO;pXk%JWCfieuIw7?^!Q;=bbO;l8Ksz@&DCjhnO0fd* z#~Q2nvAio+oU_Dr1Sh4)DKnKm{YU{6ZYJw|`z~Q!!fgh_=*saQ8VG2TXD3&?@YRH_ zsfA3?JQ9_XG{uh~g6zQFx_9pi59;U&@F2Uqsw$ROT#U~Wuj`Ht349G3jpj~ntg;vq za(VblOh^@ z68s%W=E(~*^V1itu^M4+?w|$1GV@fK)Ur$}21DFeEzE24t1jNidOLZcneGEM?eLZx zJnIk$ih3RFB2DlTlfK8Doq$uY1)I&G8~#pI5Xp1AzYMYTq16vNJDuhxUV6l{q8>On zIpvjx&^JQywktrB)&nEPgrvQD-32+P-0FZc7Sdv=#W&w-YWBz24M8P&>J}x!V|JqA z_K@YKO`EbOlox0Z$a8@Gq+X~Sjg5`nIT(^Re`JgJ%nf&Qk}K)n4f=IPPNPxsMi6%}If#3gC74tZG>zG9lM`c;}iCl@eO#1h!B3#-a3t*jFh6g|e|G|&Kxm;G1_ ztmV`!vtRbMATtr>pz47-M`NqbJh+>>2xIKpMP!79;i=0~7}X-9C0iOP+dR! zaOUCrJwarQutO|v+b7_2NQ(9UG9sz-^k?UU2-)9I6N!q)D{z*DvP2qGUZ&EvhK9Zr>^sPbMnwWa97vK zqY*KE<-KY(=0i32(=VQETcTTQ*~-JlbFsct{(`3F7H)}v74&Ez+i~qFv?@RKb4yQy zJ&)e=Cn7}Zo3Z%qiL&ic8<6z993q_dt!{@!&3x@ml*MZoHIM0axP0qm=^;)+!h@m7 zNhR6E;Q??1cpiAlkk(C+qCVq?UGxt05{;Ns6HmY!C-?>L1+~t?_w*_#^4Er#Rxs%- zM*70QIznM1htmt(JUkNBpJw8KUy@dnD3=nb^V&t)e*`gP&=M-Y_fNe?+IkQ{Bx>-qCwf_m(SedeOpWtAX}y&$r%_D6Ie%XxIzBf^{BH%S zvzu>GX{pvgMQLN8*k5BH>CvqQQ-=u5qs)^-AV6e;vLbrtWMIV+$@RI3J=cToEq@4$`> z_)Q))z|v(7y-}?3;f_be%Q<=Z`F^v`P1fzD*Xb6Jfn+uUfgq37>15SHoQ-H5=y>JT z-E<9!YUacH3%Ue~AV*G}A&T#opLf}12|skJDJu(lKzEuqp?Kx9!ApCwe#6t&v@V-$ zeE_%S6%_0?P<_{z`CtbC!N%GL00MF+f96g1c8F5_27ThHk(cId@X$H`DXYv%moC^N z5BDGZg*CZ<3Gl@=srQF>YGD0FAM$Tu`M2BWr{?pM&7}Eu5bIY-2?g~#Bwg#3KJW2# z^=tF)Tg_|MtU2$Kq4n0yPrnbft+qu;OO2sHxLj)h>*{WMI8f(aZH7`esxyW&&2C*- zuolw_i8R>$h@?BvL5zx_%8t@UmgC}f>GwZ)(P$}P?WHu$mq{pwL@#&SBQCReZICHI z)HuV8C<3p@Fa+*&w@C0np}~*{UnX9{gPN!4UouqzM=*4tY8_gPvw<9Z2l4Q@{a!B6 z?bUplke7Z87M|+F!sRb^Q3Kp40qgN4h1OR>5Nkw^*}|+Ha`I=tFFX}=5P6+6xE=rn zhc6op)N>a;jRX%)zG_b9Wvd5XzH}cO8>3>+2P2@&(XpYnENR^PGr#>dj$^t1iX4+I zj(r3mh*3wpOmYMECuibK>zlbxBabEW%<}u~?GnF8e*w7m(=^HR2@ZVSaN+7_`&^j!*GHG?lWCh>g&amFi%tWUXyc7$ zths!Pf#A4MCX)r^{|IqrW3gD^QWTegk2K`>n(hh5*O`UOwb1%SZlEvLz!No0_wl)_v$eI= z@eRNEdV2n@lYjVX#R`t6bzi+e58zwRT_7Mqh_Fb~bBN4@#~ma;hkxuh$lnUClBM61 yBkxu6=a<$+pl1|^$>})Z_mJr=q0S(J3M5V~kB`VG<>*guVDrYU{#Q4!GXDqG=PsiF literal 1000 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 J-%TGd=Rb46vR42A literal 0 HcmV?d00001 diff --git a/extras/MacOSX/Resources/playlistdrawer_active.png b/extras/MacOSX/Resources/playlistdrawer_active.png new file mode 100644 index 0000000000000000000000000000000000000000..bca5b303f3607158f3a3d892766d176a89d3050f GIT binary patch literal 1337 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 LNkvXXu0mjfV)JHO literal 0 HcmV?d00001 diff --git a/extras/MacOSX/Resources/prefs.png b/extras/MacOSX/Resources/prefs.png deleted file mode 100755 index cae3beb30b4e7d838c589c77ec2cd8eb6dbb15e4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 742 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 ki_@%07*qoM6N<$f;PZWy#N3J literal 0 HcmV?d00001 diff --git a/extras/MacOSX/Resources/skip_forward_active.png b/extras/MacOSX/Resources/skip_forward_active.png new file mode 100644 index 0000000000000000000000000000000000000000..4bc36cec54a6cb1537eb03dce2e34129fee349d6 GIT binary patch literal 2231 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 literal 0 HcmV?d00001 diff --git a/extras/MacOSX/Resources/slow.png b/extras/MacOSX/Resources/slow.png deleted file mode 100644 index cbc365c54d594c49115d3b3a5c314c8091654fd0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 603 zcmeAS@N?(olHy`uVBq!ia0vp^+(695!3-or^+GlRDVB6cUq=RpYd5a=M;HP5k|nMY zCBgY=CFO}lsSJ)O`AMk?p1FzXsX?iUDV2pMQ*D5XJ_PuLxY|XgyC&p@=2n`ABt3fe zJS4X=rMk^0t;pCvE~&D0!P+hNA3v??pV2sFUgNZR-f2bA#r11;?42-wd2z?2yAK~P z*|0r0r!uFxx4M7k^cCypuG;wc+4D(@SKqn+aOtKUlNPSf^NuQNpLqG^?GxuOA3Ak* z%F;Cp*KKK;z92BGe9GcgNtG>=m#k@?w!khbJ+-<$vZ!v}>P`I%R!m;JX6EvBSq(im z?>>kvX`Hxt^^w!(GwZtx+a_+^e>AbOW#gWM7NN7Us& zZNZ+SCkxvr`lc68U%KYbgGa9MIgg*cFb;@Yv1QlSuV3r0{|W>8J)k7WFZe%o0fTVy zvPz)YQ$1ZALn>}1O$aUACh#%*6FXA_Ly|zyhg7p~=|xPN7@0a8=QYoCJQd%3`O1BH zg$4wCR-ojS88SC>{>GN1M1XWUp7Zg)b1VL?$1Sk2cVu`%r~chq+whE;MS@{jy@*t| T->Mlv2QqlN`njxgN@xNALxM(E diff --git a/extras/MacOSX/Resources/stop.png b/extras/MacOSX/Resources/stop.png index 0713fd7846ee3d985376806a8eb949e513bf0879..3f17e4d46ef560cbb92ee10a86c1b70959bac82a 100644 GIT binary patch literal 1158 zcmXX`drZ@J5dZ%Aq)#fa*%H8-3KgyN5qzN276zjr4~qz8W6(lH$QV|1N_>=G1s%&e ztwEuR4#LABBrUMaY${M$oh>V1O{TaQc?qQoIEP3Ft-t-4`{Q$$yWD+p`CRV4*^?4a zBL|WJ0JH>YY#QpcvAnrMHYM^d#q_^CJPWvH?#j>T=?~0msy-0ZB za&e;I3*-c#B=aVPBB7|Ts7Uzq)~VfpzkF<>kB^TNAxssC$@eqkidwH52hDc7)oig- zn=iwW978I-AXfDCDrtqFYRGEA1>_UL&W%w0{QMep3ZJeuY*-GHWN+SimmiuLN(E*E z=5}xp6X{&yZ`dAaLTWdCPA1()bP5DHpsJh%XAyQh5DIWi91hP!o4B<9DR38qvxepJ z=!gn~r7}QM2w#vy3WXw$9o)x89@n1KbH%6LS%6MMNTH|bdBYl1)G?>iNq7n2gE?bI zBvP6+NPkVoz|i5I0=L`6`L#XMWR~?=d=7Ds(65<6$6785#MZJPgnJpBVfYI zA0F?OEIodeJG$QedV(m}ZeYo`$wvz+W{9YiB_$;}9R*=wg{?yE2PcuY-;K@JnwT}7 zr3H$Klhdogrq5T5tyxd=Ec(cmii?Z0&3oL7izB($5d_huh2&JQpD?!qe3TH#&%^d5;)g0ws7uLnJ+aR9O)SVU8`4S6hfPJDpjgC-e=t>dimKu17p-G!=)suW2nFX zbU_HNUR?e?Bu_*L?`h4mB*o449U4y=)KTKxE0ZZ7IUGuGhAhPj@yyPmQAblewU(b- z05Y8A+Aj^MH8nN#J|^@-AUTWEutjXkA#?+sx$T z+4EZMUEh8C{;)|pZIT!IC$C^NY21tlYi8aP3PX7ysH0O8# literal 547 zcmV+;0^I$HP) ze~Vyxhc;7UsI|PFuefD@j7Vg0S8{+rTxvsKZZ}n9U3Y}c)!9yJcTQ<`p|ZM6Xmvzj zZ=bBRQEhsSpsAazwY|s8y~W9`y1J^Qf_;)zQn-D%#ow4hnS#zlb&w72osadi&01_&UAz>sKL zex6_vOMQRBM002ovPDHLkV1nTx;;8@t diff --git a/extras/MacOSX/Resources/stop_blue.png b/extras/MacOSX/Resources/stop_blue.png new file mode 100644 index 0000000000000000000000000000000000000000..a326c25ee395c81bf6507816f2bf9f49a642cce9 GIT binary patch literal 1178 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 YdSA=eOvg@$b#4M+Vq}h~Hoy}858uA)0RR91 diff --git a/extras/MacOSX/Resources/volume_high.png b/extras/MacOSX/Resources/volume_high.png new file mode 100644 index 0000000000000000000000000000000000000000..11f2b4788642cea933a60448d678fe905848540f GIT binary patch literal 527 zcmV+q0`UEbP)z^Q>-8KIssI20AY({UO#lE{J^%n&{{R5&oB#lX7XScc zn*adVm;eAUF8}}&@!<0zSO5S4g-Jv~RCwBA`2YVu10l@M&)*2dCNMrg05LIO0RjR7 z^N{&-=FH&~78Z^GikpJ?00G2=MZS=w z5I``S{sHlSbX!)eSiudn#Y#_4Z}X2IKcuv^wNJi%`<4qJfS90)nV|mo55<2$n)dJC zzl)2Di(~KJy|`pxlf)v`6(zUcpex} zikX?2-<_SER|5nPuB0;`nJ+6V+ckOeoCO|{#XvD(5N2eUHAey{$dc~p z>&U=x);td|4*r$hw*=OuLz^Q>-8KIssI20AY({UO#lE{J^%n&{{R5&oB#lX7XScc zn*adVm;eAUF8}}&@!<0zSO5S5Hc3Q5RCwBA?Cv8PZQ3ozAo=%|9aex3~wz096efRcVtE-!7nlV*2&# zr@NAp62tG`zZic0`pK~B&^rc^@XKJl=Ew(zzkmM%#eXp*+s zH-G!~jp57ZFARCBUNC&;VFY3(hTIj;7(RXa$ng2g7Y1RV8jxCm0AgWfWn}<*nBfah z@ZZ0G3>@<8K$HG4FfxKdiHYIEhffSYK=NO|GBC5SFaQJ)v%S5Y6DKF93O6@5!=FF@ z7|ac&8BYHB&%iCr%FyY+$H4g!Xyf;93=i%<0EXJz!vF!qA|xcd^YNoc9^w)b48MN; zX3*w+!Enk=8tmC;&z>{9{PYRvzuycG9zI~;wRACF~aWjlc(#&G)dX@4Fb zUIs31E(VYmP(XbC^cm=O=8bZ4a-ATx00G1}bLLEV(s=puW$>p@pWJ~8!AXOQi|Z^O mAKy-Kaq+c4E;wlb1Q-As=HRPelt#}00000z^Q>-8KIssI20AY({UO#lE{J^%n&{{R5&oB#lX7XScc zn*adVm;eAUF8}}&@!<0zSO5S5BuPX;RCwBA?Cv8PZQ3ozAo=%|9aex3~wz096efRcVtE-!7nl9LTW= z05Avyz$c^VB6iLyPWUfELW*ndNK7-sj6e}pg^2jN8@u~nFn5s5D}b1Q0>*+sH-G!~ zjp57ZFAV3-onzqR;{#)$`x!oc`pEG4%NGV=pc;@`fB<4)Wo2amdYIu0Q1IWse+=^S z@(jR`0y{-cPLAQjhffSYK=NO|GBC5SFaQJ)3l9(X*=J9mdT_9_1D*Ak!OYBzfgQ*O z0RsaAhWGE^gPr^M;UfkvPR_Fc0mLFCB)s$SqemX%5)ur*e*I>UmXcx!2?+sfc=qf$ z!^@X1ff{}@Jb3tkfsdbWCqMu(&Y3eu_V(@Dllgf0{FPOd8CZbUGBGg%l`}E?XZXkP z@9%$xJ9lmao%UfPFo<&j0*K|uj~|a^Wo0{oA;xg}^l5({9$p46ZY~Cp7EnNZ{`48> zcIJ&h|8#=X0t67_%$YOcNdsto@TX6o+<^+gNrQ`v>nt#|c8ZIOuLW|!Ndq9j0Q%P3 Ug_nV^9{>OV07*qoM6N<$f^9)4Q2+n{ literal 0 HcmV?d00001 diff --git a/extras/MacOSX/Resources/volumetrack.png b/extras/MacOSX/Resources/volumetrack.png new file mode 100644 index 0000000000000000000000000000000000000000..f14048789287e82e5996d816e636c0bb49a865a1 GIT binary patch literal 284 zcmeAS@N?(olHy`uVBq!ia0vp^-ayR4!3HFcIUEWGQk(@Ik;M!Q+`=Ht$S`Y;1V}}? zqpu?a!;RNpWkgm1`3lJ%LB0$Ok#<1*pMl}c90rCKaR!Ez*+4Zj7#Ixn85o2=KKQH{ z0aQE5)5S5Q;#N{gd3ktZLc)uuj~;DGPE8d}kYLq#@csRL`F*v&%Q#NxuyH7e)z$rT zVq|30S2)YWv*zN3gFHHo{qpuzwLd;Q>e7_6DK~wnpIN$pllaEglR`-ix * Christophe Massiot @@ -43,35 +43,46 @@ - (IBAction)play:(id)sender { + vlc_value_t val; + playlist_t * p_playlist; intf_thread_t * p_intf = [NSApp getIntf]; - - playlist_t * p_playlist = vlc_object_find( p_intf, VLC_OBJECT_PLAYLIST, + input_thread_t * p_input = vlc_object_find( p_intf, VLC_OBJECT_INPUT, FIND_ANYWHERE ); - if( p_playlist == NULL ) + + val.i_int = PLAYING_S; + if( p_input ) { - return; + var_Get( p_input, "state", &val ); } - - if( playlist_IsPlaying( p_playlist ) ) + if( p_input && val.i_int != PAUSE_S ) { - vout_OSDMessage( (vlc_object_t *)p_intf, _( "Pause" ) ); - playlist_Pause( p_playlist ); - vlc_object_release( p_playlist ); + vout_OSDMessage( VLC_OBJECT(p_intf), _( "Pause" ) ); + val.i_int = PAUSE_S; + var_Set( p_input, "state", val ); } else { - if( !playlist_IsEmpty( p_playlist ) ) + p_playlist = vlc_object_find( p_intf, VLC_OBJECT_PLAYLIST, + FIND_ANYWHERE ); + if( p_playlist ) { - playlist_Play( p_playlist ); - vout_OSDMessage( (vlc_object_t *)p_intf, _( "Play" ) ); - vlc_object_release( p_playlist ); - } - else - { - vlc_object_release( p_playlist ); - [o_open openFileGeneric: nil]; + vlc_mutex_lock( &p_playlist->object_lock ); + if( p_playlist->i_size ) + { + vlc_mutex_unlock( &p_playlist->object_lock ); + vout_OSDMessage( VLC_OBJECT(p_intf), _( "Play" ) ); + playlist_Play( p_playlist ); + vlc_object_release( p_playlist ); + } + else + { + vlc_mutex_unlock( &p_playlist->object_lock ); + vlc_object_release( p_playlist ); + [o_open openFileGeneric: nil]; + } } } + if( p_input ) vlc_object_release( p_input ); } - (IBAction)stop:(id)sender @@ -119,100 +130,28 @@ - (IBAction)prev:(id)sender { - vlc_value_t val; intf_thread_t * p_intf = [NSApp getIntf]; - playlist_t * p_playlist = vlc_object_find( p_intf, VLC_OBJECT_PLAYLIST, FIND_ANYWHERE ); - if( p_playlist == NULL ) - { - return; - } - - vlc_mutex_lock( &p_playlist->object_lock ); - - if( p_playlist->p_input == NULL ) - { - vlc_mutex_unlock( &p_playlist->object_lock ); - vlc_object_release( p_playlist ); - return; - } - - vlc_mutex_lock( &p_playlist->p_input->stream.stream_lock ); - val.b_bool = VLC_TRUE; - -#define p_area p_playlist->p_input->stream.p_selected_area - if( p_area->i_part > 0 && p_area->i_part_nb > 1) - { - vlc_mutex_unlock( &p_playlist->p_input->stream.stream_lock ); - var_Set( p_playlist->p_input, "prev-chapter", val ); - vlc_mutex_unlock( &p_playlist->object_lock ); - } - else if( p_area->i_id > 1 ) - { - vlc_mutex_unlock( &p_playlist->p_input->stream.stream_lock ); - var_Set( p_playlist->p_input, "prev-title", val ); - vlc_mutex_unlock( &p_playlist->object_lock ); - } - else + if( p_playlist ) { - vlc_mutex_unlock( &p_playlist->p_input->stream.stream_lock ); - vlc_mutex_unlock( &p_playlist->object_lock ); playlist_Prev( p_playlist ); + vlc_object_release( p_playlist ); + vout_OSDMessage( (vlc_object_t *)p_intf, _( "Previous" ) ); } -#undef p_area - - vlc_object_release( p_playlist ); - vout_OSDMessage( (vlc_object_t *)p_intf, _( "Previous" ) ); } - (IBAction)next:(id)sender { - vlc_value_t val; intf_thread_t * p_intf = [NSApp getIntf]; - playlist_t * p_playlist = vlc_object_find( p_intf, VLC_OBJECT_PLAYLIST, FIND_ANYWHERE ); - if( p_playlist == NULL ) - { - return; - } - - vlc_mutex_lock( &p_playlist->object_lock ); - - if( p_playlist->p_input == NULL ) - { - vlc_mutex_unlock( &p_playlist->object_lock ); - vlc_object_release( p_playlist ); - return; - } - - vlc_mutex_lock( &p_playlist->p_input->stream.stream_lock ); - val.b_bool = VLC_TRUE; - -#define p_area p_playlist->p_input->stream.p_selected_area - if( p_area->i_part < p_area->i_part_nb - 1 && p_area->i_part_nb > 1 ) + if( p_playlist ) { - vlc_mutex_unlock( &p_playlist->p_input->stream.stream_lock ); - var_Set( p_playlist->p_input, "next-chapter", val ); - vlc_mutex_unlock( &p_playlist->object_lock ); - } - else if( p_area->i_id < p_playlist->p_input->stream.i_area_nb && p_playlist->p_input->stream.i_area_nb > 1 ) - { - vlc_mutex_unlock( &p_playlist->p_input->stream.stream_lock ); - var_Set( p_playlist->p_input, "next-title", val ); - vlc_mutex_unlock( &p_playlist->object_lock ); - } - else - { - vlc_mutex_unlock( &p_playlist->p_input->stream.stream_lock ); - vlc_mutex_unlock( &p_playlist->object_lock ); playlist_Next( p_playlist ); + vlc_object_release( p_playlist ); + vout_OSDMessage( (vlc_object_t *)p_intf, _( "Next" ) ); } -#undef p_area - - vlc_object_release( p_playlist ); - vout_OSDMessage( (vlc_object_t *)p_intf, _( "Next" ) ); } - (IBAction)random:(id)sender @@ -397,9 +336,7 @@ { if( [[o_window className] isEqualToString: @"VLCWindow"] ) { - if( [o_title isEqualToString: _NS("Fullscreen") ] ) - [o_window toggleFullscreen]; - else if( [o_title isEqualToString: _NS("Half Size") ] ) + if( [o_title isEqualToString: _NS("Half Size") ] ) [o_window scaleWindowWithFactor: 0.5]; else if( [o_title isEqualToString: _NS("Normal Size") ] ) [o_window scaleWindowWithFactor: 1.0]; @@ -412,6 +349,8 @@ if( ![o_window isZoomed] ) [o_window performZoom:self]; } + else + [o_window toggleFullscreen]; break; } } diff --git a/modules/gui/macosx/intf.h b/modules/gui/macosx/intf.h index 9c328132c2..56d8d87c94 100644 --- a/modules/gui/macosx/intf.h +++ b/modules/gui/macosx/intf.h @@ -2,7 +2,7 @@ * intf.h: MacOS X interface plugin ***************************************************************************** * Copyright (C) 2002-2003 VideoLAN - * $Id: intf.h,v 1.48 2003/11/11 23:50:41 hartman Exp $ + * $Id: intf.h,v 1.49 2003/11/15 22:42:16 hartman Exp $ * * Authors: Jon Lech Johansen * Christophe Massiot @@ -93,6 +93,7 @@ struct intf_sys_t id o_prefs; /* VLCPrefs */ IBOutlet id o_window; /* main window */ + IBOutlet id o_infofield; /* info field */ IBOutlet id o_timefield; /* time field */ IBOutlet id o_timeslider; /* time slider */ float f_slider; /* slider value */ @@ -101,15 +102,17 @@ struct intf_sys_t IBOutlet id o_btn_playlist; /* btn playlist */ IBOutlet id o_btn_prev; /* btn previous */ - IBOutlet id o_btn_slower; /* btn slower */ + IBOutlet id o_btn_rewind; /* btn rewind */ IBOutlet id o_btn_play; /* btn play */ IBOutlet id o_btn_stop; /* btn stop */ - IBOutlet id o_btn_faster; /* btn faster */ + IBOutlet id o_btn_ff; /* btn fast forward */ IBOutlet id o_btn_next; /* btn next */ - IBOutlet id o_btn_prefs; /* btn prefs */ + IBOutlet id o_btn_fullscreen;/* btn fullscreen */ NSImage * o_img_play; /* btn play img */ NSImage * o_img_pause; /* btn pause img */ + NSImage * o_img_play_pressed; /* btn play img */ + NSImage * o_img_pause_pressed; /* btn pause img */ IBOutlet id o_controls; /* VLCControls */ IBOutlet id o_playlist; /* VLCPlaylist */ @@ -226,6 +229,7 @@ struct intf_sys_t } - (id)getControls; +- (id)getPlaylist; - (void)terminate; - (void)initStrings; diff --git a/modules/gui/macosx/intf.m b/modules/gui/macosx/intf.m index 8d958bf118..5169d1715a 100644 --- a/modules/gui/macosx/intf.m +++ b/modules/gui/macosx/intf.m @@ -2,7 +2,7 @@ * intf.m: MacOS X interface plugin ***************************************************************************** * Copyright (C) 2002-2003 VideoLAN - * $Id: intf.m,v 1.100 2003/11/11 23:50:41 hartman Exp $ + * $Id: intf.m,v 1.101 2003/11/15 22:42:16 hartman Exp $ * * Authors: Jon Lech Johansen * Christophe Massiot @@ -376,7 +376,7 @@ unsigned int VLCModifiersToCocoa( unsigned int i_key ) { unsigned int i_key; intf_thread_t * p_intf = [NSApp getIntf]; - + [self initStrings]; [o_window setExcludedFromWindowsMenu: TRUE]; [o_msgs_panel setExcludedFromWindowsMenu: TRUE]; @@ -431,12 +431,12 @@ unsigned int VLCModifiersToCocoa( unsigned int i_key ) /* button controls */ [o_btn_playlist setToolTip: _NS("Playlist")]; [o_btn_prev setToolTip: _NS("Previous")]; - [o_btn_slower setToolTip: _NS("Slower")]; + [o_btn_rewind setToolTip: _NS("Rewind")]; [o_btn_play setToolTip: _NS("Play")]; [o_btn_stop setToolTip: _NS("Stop")]; - [o_btn_faster setToolTip: _NS("Faster")]; + [o_btn_ff setToolTip: _NS("Fast Forward")]; [o_btn_next setToolTip: _NS("Next")]; - [o_btn_prefs setToolTip: _NS("Preferences")]; + [o_btn_fullscreen setToolTip: _NS("Fullscreen")]; [o_volumeslider setToolTip: _NS("Volume")]; [o_timeslider setToolTip: _NS("Position")]; @@ -556,7 +556,9 @@ unsigned int VLCModifiersToCocoa( unsigned int i_key ) o_msg_arr = [[NSMutableArray arrayWithCapacity: 200] retain]; o_img_play = [[NSImage imageNamed: @"play"] retain]; + o_img_play_pressed = [[NSImage imageNamed: @"play_blue"] retain]; o_img_pause = [[NSImage imageNamed: @"pause"] retain]; + o_img_pause_pressed = [[NSImage imageNamed: @"pause_blue"] retain]; [p_intf->p_sys->o_sendport setDelegate: self]; [[NSRunLoop currentRunLoop] @@ -591,6 +593,15 @@ unsigned int VLCModifiersToCocoa( unsigned int i_key ) return nil; } +- (id)getPlaylist +{ + if ( o_playlist ) + { + return o_playlist; + } + return nil; +} + - (void)manage { NSDate * o_sleep_date; @@ -715,7 +726,6 @@ unsigned int VLCModifiersToCocoa( unsigned int i_key ) vlc_bool_t b_control = VLC_FALSE; vlc_bool_t b_seekable = VLC_FALSE; vlc_bool_t b_chapters = VLC_FALSE; - vlc_value_t val; b_plmul = p_playlist->i_size > 1; @@ -733,23 +743,11 @@ unsigned int VLCModifiersToCocoa( unsigned int i_key ) b_chapters = p_input->stream.i_area_nb > 1; vlc_mutex_unlock( &p_input->stream.stream_lock ); - - /* play status */ - var_Get( p_input, "state", &val ); - p_intf->p_sys->b_play_status = val.i_int != PAUSE_S; - } - else - { - /* play status */ - p_intf->p_sys->b_play_status = FALSE; - [self setSubmenusEnabled: FALSE]; } - [self playStatusUpdated: p_intf->p_sys->b_play_status]; - [o_btn_stop setEnabled: b_input]; - [o_btn_faster setEnabled: b_control]; - [o_btn_slower setEnabled: b_control]; + [o_btn_ff setEnabled: b_control]; + [o_btn_rewind setEnabled: b_control]; [o_btn_prev setEnabled: (b_plmul || b_chapters)]; [o_btn_next setEnabled: (b_plmul || b_chapters)]; @@ -764,19 +762,9 @@ unsigned int VLCModifiersToCocoa( unsigned int i_key ) if( p_intf->p_sys->b_playing && p_input != NULL ) { - vlc_value_t time, val; + vlc_value_t time; NSString * o_time; mtime_t i_seconds; - var_Get( p_input, "state", &val ); - - if( !p_input->b_die && ( p_intf->p_sys->b_play_status != - ( val.i_int != PAUSE_S ) ) ) - { - p_intf->p_sys->b_play_status = - !p_intf->p_sys->b_play_status; - - [self playStatusUpdated: p_intf->p_sys->b_play_status]; - } if( p_input->stream.b_seekable ) { @@ -800,9 +788,27 @@ unsigned int VLCModifiersToCocoa( unsigned int i_key ) (int) (i_seconds / 60 % 60), (int) (i_seconds % 60)]; [o_timefield setStringValue: o_time]; + } + if( p_input ) + { + vlc_value_t val; + var_Get( p_input, "state", &val ); - /* disable screen saver */ - UpdateSystemActivity( UsrActivity ); + if( val.i_int != PAUSE_S ) + { + p_intf->p_sys->b_play_status = TRUE; + } + else + { + p_intf->p_sys->b_play_status = FALSE; + } + [self playStatusUpdated: p_intf->p_sys->b_play_status]; + } + else + { + p_intf->p_sys->b_play_status = FALSE; + [self playStatusUpdated: p_intf->p_sys->b_play_status]; + [self setSubmenusEnabled: FALSE]; } #undef p_input @@ -964,6 +970,7 @@ unsigned int VLCModifiersToCocoa( unsigned int i_key ) if( b_pause ) { [o_btn_play setImage: o_img_pause]; + [o_btn_play setAlternateImage: o_img_pause_pressed]; [o_btn_play setToolTip: _NS("Pause")]; [o_mi_play setTitle: _NS("Pause")]; [o_dmi_play setTitle: _NS("Pause")]; @@ -971,6 +978,7 @@ unsigned int VLCModifiersToCocoa( unsigned int i_key ) else { [o_btn_play setImage: o_img_play]; + [o_btn_play setAlternateImage: o_img_play_pressed]; [o_btn_play setToolTip: _NS("Play")]; [o_mi_play setTitle: _NS("Play")]; [o_dmi_play setTitle: _NS("Play")]; @@ -983,6 +991,7 @@ unsigned int VLCModifiersToCocoa( unsigned int i_key ) [o_mi_title setEnabled: b_enabled]; [o_mi_chapter setEnabled: b_enabled]; [o_mi_audiotrack setEnabled: b_enabled]; + [o_mi_visual setEnabled: b_enabled]; [o_mi_videotrack setEnabled: b_enabled]; [o_mi_subtitle setEnabled: b_enabled]; [o_mi_channels setEnabled: b_enabled]; @@ -1073,6 +1082,18 @@ unsigned int VLCModifiersToCocoa( unsigned int i_key ) playlist_Destroy( p_playlist ); } + if( o_img_pause_pressed != nil ) + { + [o_img_pause_pressed release]; + o_img_pause_pressed = nil; + } + + if( o_img_pause_pressed != nil ) + { + [o_img_pause_pressed release]; + o_img_pause_pressed = nil; + } + if( o_img_pause != nil ) { [o_img_pause release]; diff --git a/modules/gui/macosx/misc.h b/modules/gui/macosx/misc.h index 6c1ca21963..24fecc0cab 100644 --- a/modules/gui/macosx/misc.h +++ b/modules/gui/macosx/misc.h @@ -2,7 +2,7 @@ * misc.h: code not specific to vlc ***************************************************************************** * Copyright (C) 2003 VideoLAN - * $Id: misc.h,v 1.2 2003/03/13 22:24:17 hartman Exp $ + * $Id: misc.h,v 1.3 2003/11/15 22:42:16 hartman Exp $ * * Authors: Jon Lech Johansen * @@ -21,6 +21,26 @@ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111, USA. *****************************************************************************/ +/***************************************************************************** + * VLCControllerWindow + *****************************************************************************/ + +@interface VLCControllerWindow : NSWindow +{ +} + +@end + +/***************************************************************************** + * VLCControllerView + *****************************************************************************/ + +@interface VLCControllerView : NSView +{ +} + +@end + /***************************************************************************** * VLBrushedMetalImageView *****************************************************************************/ diff --git a/modules/gui/macosx/misc.m b/modules/gui/macosx/misc.m index 67196e9bb2..21eaa7e72d 100644 --- a/modules/gui/macosx/misc.m +++ b/modules/gui/macosx/misc.m @@ -2,7 +2,7 @@ * misc.m: code not specific to vlc ***************************************************************************** * Copyright (C) 2003 VideoLAN - * $Id: misc.m,v 1.2 2003/03/13 22:24:17 hartman Exp $ + * $Id: misc.m,v 1.3 2003/11/15 22:42:16 hartman Exp $ * * Authors: Jon Lech Johansen * @@ -24,6 +24,98 @@ #include #include "misc.h" +#include "playlist.h" + +/***************************************************************************** + * VLCControllerWindow + *****************************************************************************/ + +@implementation VLCControllerWindow + +- (id)initWithContentRect:(NSRect)contentRect styleMask:(unsigned int)styleMask + backing:(NSBackingStoreType)backingType defer:(BOOL)flag +{ + self = [super initWithContentRect:contentRect styleMask:styleMask //& ~NSTitledWindowMask + backing:backingType defer:flag]; + + return( self ); +} +@end + + + +/***************************************************************************** + * VLCControllerView + *****************************************************************************/ + +@implementation VLCControllerView + +- (void)dealloc +{ + [self unregisterDraggedTypes]; + [super dealloc]; +} + +- (void)awakeFromNib +{ + [self registerForDraggedTypes:[NSArray arrayWithObjects:NSTIFFPboardType, + NSFilenamesPboardType, nil]]; +} + +- (NSDragOperation)draggingEntered:(id )sender +{ + if ((NSDragOperationGeneric & [sender draggingSourceOperationMask]) + == NSDragOperationGeneric) + { + return NSDragOperationGeneric; + } + else + { + return NSDragOperationNone; + } +} + +- (BOOL)prepareForDragOperation:(id )sender +{ + return YES; +} + +- (BOOL)performDragOperation:(id )sender +{ + NSPasteboard *o_paste = [sender draggingPasteboard]; + NSArray *o_types = [NSArray arrayWithObjects: NSFilenamesPboardType, nil]; + NSString *o_desired_type = [o_paste availableTypeFromArray:o_types]; + NSData *o_carried_data = [o_paste dataForType:o_desired_type]; + + if( o_carried_data ) + { + if ([o_desired_type isEqualToString:NSFilenamesPboardType]) + { + int i; + NSArray *o_array = [NSArray array]; + NSArray *o_values = [[o_paste propertyListForType: NSFilenamesPboardType] + sortedArrayUsingSelector:@selector(caseInsensitiveCompare:)]; + + for( i = 0; i < (int)[o_values count]; i++) + { + NSDictionary *o_dic; + o_dic = [NSDictionary dictionaryWithObject:[o_values objectAtIndex:i] forKey:@"ITEM_URL"]; + o_array = [o_array arrayByAddingObject: o_dic]; + } + [(VLCPlaylist *)[[NSApp delegate] getPlaylist] appendArray: o_array atPos: -1 enqueue:NO]; + return YES; + } + } + [self setNeedsDisplay:YES]; + return YES; +} + +- (void)concludeDragOperation:(id )sender +{ + [self setNeedsDisplay:YES]; +} + +@end /***************************************************************************** * VLBrushedMetalImageView @@ -36,6 +128,71 @@ return YES; } +- (void)dealloc +{ + [self unregisterDraggedTypes]; + [super dealloc]; +} + +- (void)awakeFromNib +{ + [self registerForDraggedTypes:[NSArray arrayWithObjects:NSTIFFPboardType, + NSFilenamesPboardType, nil]]; +} + +- (NSDragOperation)draggingEntered:(id )sender +{ + if ((NSDragOperationGeneric & [sender draggingSourceOperationMask]) + == NSDragOperationGeneric) + { + return NSDragOperationGeneric; + } + else + { + return NSDragOperationNone; + } +} + +- (BOOL)prepareForDragOperation:(id )sender +{ + return YES; +} + +- (BOOL)performDragOperation:(id )sender +{ + NSPasteboard *o_paste = [sender draggingPasteboard]; + NSArray *o_types = [NSArray arrayWithObjects: NSFilenamesPboardType, nil]; + NSString *o_desired_type = [o_paste availableTypeFromArray:o_types]; + NSData *o_carried_data = [o_paste dataForType:o_desired_type]; + + if( o_carried_data ) + { + if ([o_desired_type isEqualToString:NSFilenamesPboardType]) + { + int i; + NSArray *o_array = [NSArray array]; + NSArray *o_values = [[o_paste propertyListForType: NSFilenamesPboardType] + sortedArrayUsingSelector:@selector(caseInsensitiveCompare:)]; + + for( i = 0; i < (int)[o_values count]; i++) + { + NSDictionary *o_dic; + o_dic = [NSDictionary dictionaryWithObject:[o_values objectAtIndex:i] forKey:@"ITEM_URL"]; + o_array = [o_array arrayByAddingObject: o_dic]; + } + [(VLCPlaylist *)[[NSApp delegate] getPlaylist] appendArray: o_array atPos: -1 enqueue:NO]; + return YES; + } + } + [self setNeedsDisplay:YES]; + return YES; +} + +- (void)concludeDragOperation:(id )sender +{ + [self setNeedsDisplay:YES]; +} + @end @@ -65,12 +222,12 @@ if( self != nil ) { _bgColor = [[NSColor colorWithDeviceRed: 0.8627451 - green: 0.8784314 - blue: 0.7725490 - alpha: 1.0] retain]; + green: 0.8784314 + blue: 0.7725490 + alpha: 1.0] retain]; _knobColor = [[NSColor blackColor] retain]; } - + NSLog(@"boe"); return( self ); } diff --git a/modules/gui/macosx/playlist.m b/modules/gui/macosx/playlist.m index fa854a95cd..17f9a4637b 100644 --- a/modules/gui/macosx/playlist.m +++ b/modules/gui/macosx/playlist.m @@ -2,7 +2,7 @@ * playlist.m: MacOS X interface plugin ***************************************************************************** * Copyright (C) 2002-2003 VideoLAN - * $Id: playlist.m,v 1.37 2003/11/12 02:45:26 hartman Exp $ + * $Id: playlist.m,v 1.38 2003/11/15 22:42:16 hartman Exp $ * * Authors: Jon Lech Johansen * Derk-Jan Hartman @@ -305,7 +305,6 @@ temp = strrchr( psz_dev , 's' ); psz_dev[temp - psz_dev] = '\0'; o_url = [NSString stringWithCString: psz_dev ]; - NSLog(@"%@", o_url); } if (i_item == 0 && !b_enqueue) diff --git a/modules/gui/macosx/vout.h b/modules/gui/macosx/vout.h index 4e7e92664c..bbab2f8b6a 100644 --- a/modules/gui/macosx/vout.h +++ b/modules/gui/macosx/vout.h @@ -2,7 +2,7 @@ * vout.h: MacOS X interface plugin ***************************************************************************** * Copyright (C) 2001-2003 VideoLAN - * $Id: vout.h,v 1.15 2003/11/06 16:28:28 hartman Exp $ + * $Id: vout.h,v 1.16 2003/11/15 22:42:16 hartman Exp $ * * Authors: Colin Delacroix * Florian G. Pflug @@ -73,10 +73,6 @@ struct vout_sys_t NSRect s_rect; int b_pos_saved; VLCWindow * o_window; - Rect rect; - int portx; - int porty; - int isplugin; vlc_bool_t b_mouse_moved; mtime_t i_time_mouse_last_moved; @@ -84,12 +80,10 @@ struct vout_sys_t #ifdef __QUICKTIME__ CodecType i_codec; CGrafPtr p_qdport; - CGrafPtr p_qdportold; ImageSequence i_seq; MatrixRecordPtr p_matrix; DecompressorComponent img_dc; ImageDescriptionHandle h_img_descr; Ptr p_fullscreen_state; - RgnHandle mask; #endif }; diff --git a/modules/gui/macosx/vout.m b/modules/gui/macosx/vout.m index 750990e24e..9418d85c1c 100644 --- a/modules/gui/macosx/vout.m +++ b/modules/gui/macosx/vout.m @@ -1,9 +1,8 @@ - /***************************************************************************** * vout.m: MacOS X video output plugin ***************************************************************************** * Copyright (C) 2001-2003 VideoLAN - * $Id: vout.m,v 1.64 2003/11/11 23:50:41 hartman Exp $ + * $Id: vout.m,v 1.65 2003/11/15 22:42:16 hartman Exp $ * * Authors: Colin Delacroix * Florian G. Pflug @@ -83,9 +82,6 @@ int E_(OpenVideo) ( vlc_object_t *p_this ) vout_thread_t * p_vout = (vout_thread_t *)p_this; OSErr err; int i_timeout; - vlc_value_t value_drawable; - - var_Get( p_vout->p_vlc, "drawable", &value_drawable ); p_vout->p_sys = malloc( sizeof( vout_sys_t ) ); if( p_vout->p_sys == NULL ) @@ -96,46 +92,41 @@ int E_(OpenVideo) ( vlc_object_t *p_this ) memset( p_vout->p_sys, 0, sizeof( vout_sys_t ) ); - /* We don't need an intf in mozilla plugin */ - if( value_drawable.i_int == 0 ) + /* Wait for a MacOS X interface to appear. Timeout is 2 seconds. */ + for( i_timeout = 20 ; i_timeout-- ; ) { - /* Wait for a MacOS X interface to appear. Timeout is 2 seconds. */ - for( i_timeout = 20 ; i_timeout-- ; ) + if( NSApp == NULL ) { - if( NSApp == NULL ) + msleep( INTF_IDLE_SLEEP ); + } + } + + if( NSApp == NULL ) + { + /* no MacOS X intf, unable to communicate with MT */ + msg_Err( p_vout, "no MacOS X interface present" ); + free( p_vout->p_sys ); + return( 1 ); + } + + if( [NSApp respondsToSelector: @selector(getIntf)] ) + { + intf_thread_t * p_intf; + + for( i_timeout = 10 ; i_timeout-- ; ) + { + if( ( p_intf = [NSApp getIntf] ) == NULL ) { msleep( INTF_IDLE_SLEEP ); } } - - if( NSApp == NULL ) + + if( p_intf == NULL ) { - /* no MacOS X intf, unable to communicate with MT */ - msg_Err( p_vout, "no MacOS X interface present" ); + msg_Err( p_vout, "MacOS X intf has getIntf, but is NULL" ); free( p_vout->p_sys ); return( 1 ); } - - - if( [NSApp respondsToSelector: @selector(getIntf)] ) - { - intf_thread_t * p_intf; - - for( i_timeout = 10 ; i_timeout-- ; ) - { - if( ( p_intf = [NSApp getIntf] ) == NULL ) - { - msleep( INTF_IDLE_SLEEP ); - } - } - - if( p_intf == NULL ) - { - msg_Err( p_vout, "MacOS X intf has getIntf, but is NULL" ); - free( p_vout->p_sys ); - return( 1 ); - } - } } p_vout->p_sys->h_img_descr = @@ -146,22 +137,6 @@ int E_(OpenVideo) ( vlc_object_t *p_this ) p_vout->p_sys->b_mouse_moved = VLC_TRUE; p_vout->p_sys->i_time_mouse_last_moved = mdate(); - if( value_drawable.i_int != 0 ) - { - p_vout->p_sys->mask = NewRgn(); - p_vout->p_sys->rect.left = 0 ; - p_vout->p_sys->rect.right = 0 ; - p_vout->p_sys->rect.top = 0 ; - p_vout->p_sys->rect.bottom = 0 ; - - p_vout->p_sys->isplugin = VLC_TRUE ; - - } else - { - p_vout->p_sys->mask = NULL; - p_vout->p_sys->isplugin = VLC_FALSE ; - } - /* set window size */ p_vout->p_sys->s_rect.size.width = p_vout->i_window_width; p_vout->p_sys->s_rect.size.height = p_vout->i_window_height; @@ -246,17 +221,13 @@ int E_(OpenVideo) ( vlc_object_t *p_this ) } [o_pool release]; - /* We don't need a window either in the mozilla plugin */ - if( p_vout->p_sys->isplugin == 0 ) + if( CoCreateWindow( p_vout ) ) { - if( CoCreateWindow( p_vout ) ) - { - msg_Err( p_vout, "unable to create window" ); - free( p_vout->p_sys->p_matrix ); - DisposeHandle( (Handle)p_vout->p_sys->h_img_descr ); - free( p_vout->p_sys ); - return( 1 ); - } + msg_Err( p_vout, "unable to create window" ); + free( p_vout->p_sys->p_matrix ); + DisposeHandle( (Handle)p_vout->p_sys->h_img_descr ); + free( p_vout->p_sys ); + return( 1 ); } p_vout->pf_init = vout_Init; @@ -275,7 +246,6 @@ static int vout_Init( vout_thread_t *p_vout ) { int i_index; picture_t *p_pic; - vlc_value_t val; I_OUTPUTPICTURES = 0; @@ -286,13 +256,6 @@ static int vout_Init( vout_thread_t *p_vout ) p_vout->output.i_height = p_vout->render.i_height; p_vout->output.i_aspect = p_vout->render.i_aspect; - var_Get( p_vout->p_vlc, "drawable", &val ); - - if( p_vout->p_sys->isplugin ) - { - p_vout->p_sys->p_qdport = val.i_int; - } - SetPort( p_vout->p_sys->p_qdport ); QTScaleMatrix( p_vout ); @@ -356,14 +319,11 @@ static void vout_End( vout_thread_t *p_vout ) *****************************************************************************/ void E_(CloseVideo) ( vlc_object_t *p_this ) { - vout_thread_t * p_vout = (vout_thread_t *)p_this; + vout_thread_t * p_vout = (vout_thread_t *)p_this; - if ( !p_vout->p_sys->isplugin ) + if( CoDestroyWindow( p_vout ) ) { - if( CoDestroyWindow( p_vout ) ) - { - msg_Err( p_vout, "unable to destroy window" ); - } + msg_Err( p_vout, "unable to destroy window" ); } if ( p_vout->p_sys->p_fullscreen_state != NULL ) @@ -385,9 +345,6 @@ void E_(CloseVideo) ( vlc_object_t *p_this ) *****************************************************************************/ static int vout_Manage( vout_thread_t *p_vout ) { - vlc_value_t val1; - var_Get( p_vout->p_vlc, "drawableredraw", &val1 ); - if( p_vout->i_changes & VOUT_FULLSCREEN_CHANGE ) { if( CoToggleFullscreen( p_vout ) ) @@ -398,23 +355,13 @@ static int vout_Manage( vout_thread_t *p_vout ) p_vout->i_changes &= ~VOUT_FULLSCREEN_CHANGE; } - if( (p_vout->i_changes & VOUT_SIZE_CHANGE) || - ( p_vout->p_sys->isplugin && val1.i_int == 1) ) + if( p_vout->i_changes & VOUT_SIZE_CHANGE ) { - if( p_vout->p_sys->isplugin ) - { - val1.i_int = 0; - var_Set( p_vout->p_vlc, "drawableredraw", val1 ); - QTScaleMatrix( p_vout ); - SetDSequenceMask( p_vout->p_sys->i_seq , p_vout->p_sys->mask ); - } - else - { - QTScaleMatrix( p_vout ); - SetDSequenceMatrix( p_vout->p_sys->i_seq, - p_vout->p_sys->p_matrix ); - p_vout->i_changes &= ~VOUT_SIZE_CHANGE; - } + QTScaleMatrix( p_vout ); + SetDSequenceMatrix( p_vout->p_sys->i_seq, + p_vout->p_sys->p_matrix ); + + p_vout->i_changes &= ~VOUT_SIZE_CHANGE; } /* hide/show mouse cursor @@ -432,6 +379,9 @@ static int vout_Manage( vout_thread_t *p_vout ) VLCHideMouse( p_vout, NO ); } + /* disable screen saver */ + UpdateSystemActivity( UsrActivity ); + return( 0 ); } @@ -444,62 +394,18 @@ static void vout_Display( vout_thread_t *p_vout, picture_t *p_pic ) { OSErr err; CodecFlags flags; - Rect oldrect; - RgnHandle oldClip; - if( p_vout->p_sys->isplugin ) + if( ( err = DecompressSequenceFrameS( + p_vout->p_sys->i_seq, + p_pic->p_sys->p_info, + p_pic->p_sys->i_size, + codecFlagUseImageBuffer, &flags, nil ) != noErr ) ) { - oldClip = NewRgn(); - - /* In mozilla plugin, mozilla browser also draws things in - * the windows. So we have to update the port/Origin for each - * picture. FIXME : the vout should lock something ! */ - GetPort( &p_vout->p_sys->p_qdportold ); - GetPortBounds( p_vout->p_sys->p_qdportold, &oldrect ); - GetClip( oldClip ); - - LockPortBits( p_vout->p_sys->p_qdport ); - - SetPort( p_vout->p_sys->p_qdport ); - SetOrigin( p_vout->p_sys->portx , p_vout->p_sys->porty ); - ClipRect( &p_vout->p_sys->rect ); - - - if( ( err = DecompressSequenceFrameS( - p_vout->p_sys->i_seq, - p_pic->p_sys->p_info, - p_pic->p_sys->i_size, - codecFlagUseImageBuffer, &flags, nil ) != noErr ) ) - { - msg_Warn( p_vout, "DecompressSequenceFrameS failed: %d", err ); - } - else - { - QDFlushPortBuffer( p_vout->p_sys->p_qdport, p_vout->p_sys->mask ); - } - - - SetOrigin( oldrect.left , oldrect.top ); - SetClip( oldClip ); - SetPort( p_vout->p_sys->p_qdportold ); - - UnlockPortBits( p_vout->p_sys->p_qdport ); - + msg_Warn( p_vout, "DecompressSequenceFrameS failed: %d", err ); } else - { - if( ( err = DecompressSequenceFrameS( - p_vout->p_sys->i_seq, - p_pic->p_sys->p_info, - p_pic->p_sys->i_size, - codecFlagUseImageBuffer, &flags, nil ) != noErr ) ) - { - msg_Warn( p_vout, "DecompressSequenceFrameS failed: %d", err ); - } - else - { - QDFlushPortBuffer( p_vout->p_sys->p_qdport, nil ); - } + { + QDFlushPortBuffer( p_vout->p_sys->p_qdport, nil ); } } @@ -547,10 +453,8 @@ static int CoCreateWindow( vout_thread_t *p_vout ) *****************************************************************************/ static int CoDestroyWindow( vout_thread_t *p_vout ) { - if( [[NSCursor currentCursor] image] == NULL ) - { - VLCHideMouse( p_vout, NO ); - } + + VLCHideMouse( p_vout, NO ); if( CoSendRequest( p_vout, @selector(destroyWindow:) ) ) { @@ -586,6 +490,9 @@ static int CoToggleFullscreen( vout_thread_t *p_vout ) return( 1 ); } + SetPort( p_vout->p_sys->p_qdport ); + QTScaleMatrix( p_vout ); + if( QTCreateSequence( p_vout ) ) { msg_Err( p_vout, "unable to create sequence" ); @@ -635,51 +542,12 @@ static void QTScaleMatrix( vout_thread_t *p_vout ) Fixed factor_x, factor_y; unsigned int i_offset_x = 0; unsigned int i_offset_y = 0; - vlc_value_t val; - vlc_value_t valt; - vlc_value_t vall; - vlc_value_t valb; - vlc_value_t valr; - vlc_value_t valx; - vlc_value_t valy; - vlc_value_t valw; - vlc_value_t valh; - vlc_value_t valportx; - vlc_value_t valporty; GetPortBounds( p_vout->p_sys->p_qdport, &s_rect ); + i_width = s_rect.right - s_rect.left; i_height = s_rect.bottom - s_rect.top; - var_Get( p_vout->p_vlc, "drawable", &val ); - var_Get( p_vout->p_vlc, "drawablet", &valt ); - var_Get( p_vout->p_vlc, "drawablel", &vall ); - var_Get( p_vout->p_vlc, "drawableb", &valb ); - var_Get( p_vout->p_vlc, "drawabler", &valr ); - var_Get( p_vout->p_vlc, "drawablex", &valx ); - var_Get( p_vout->p_vlc, "drawabley", &valy ); - var_Get( p_vout->p_vlc, "drawablew", &valw ); - var_Get( p_vout->p_vlc, "drawableh", &valh ); - var_Get( p_vout->p_vlc, "drawableportx", &valportx ); - var_Get( p_vout->p_vlc, "drawableporty", &valporty ); - - if( p_vout->p_sys->isplugin ) - { - p_vout->p_sys->portx = valportx.i_int; - p_vout->p_sys->porty = valporty.i_int; - p_vout->p_sys->p_qdport = val.i_int; - i_width = valw.i_int; - i_height = valh.i_int; - - SetRectRgn( p_vout->p_sys->mask , vall.i_int - valx.i_int , - valt.i_int - valy.i_int , valr.i_int - valx.i_int , - valb.i_int - valy.i_int ); - p_vout->p_sys->rect.top = 0; - p_vout->p_sys->rect.left = 0; - p_vout->p_sys->rect.bottom = valb.i_int - valt.i_int; - p_vout->p_sys->rect.right = valr.i_int - vall.i_int; - } - if( i_height * p_vout->output.i_aspect < i_width * VOUT_ASPECT_FACTOR ) { int i_adj_width = i_height * p_vout->output.i_aspect / @@ -690,7 +558,7 @@ static void QTScaleMatrix( vout_thread_t *p_vout ) factor_y = FixDiv( Long2Fix( i_height ), Long2Fix( p_vout->output.i_height ) ); - i_offset_x = (i_width - i_adj_width) / 2 + i_offset_x; + i_offset_x = (i_width - i_adj_width) / 2; } else { @@ -702,7 +570,7 @@ static void QTScaleMatrix( vout_thread_t *p_vout ) factor_y = FixDiv( Long2Fix( i_adj_height ), Long2Fix( p_vout->output.i_height ) ); - i_offset_y = (i_height - i_adj_height) / 2 + i_offset_y; + i_offset_y = (i_height - i_adj_height) / 2; } SetIdentityMatrix( p_vout->p_sys->p_matrix ); @@ -745,10 +613,8 @@ static int QTCreateSequence( vout_thread_t *p_vout ) p_descr->dataSize = 0; p_descr->depth = 24; - HUnlock( (Handle)p_vout->p_sys->h_img_descr ); - if( ( err = DecompressSequenceBeginS( &p_vout->p_sys->i_seq, p_vout->p_sys->h_img_descr, @@ -756,7 +622,7 @@ static int QTCreateSequence( vout_thread_t *p_vout ) p_vout->p_sys->p_qdport, NULL, NULL, p_vout->p_sys->p_matrix, - 0, p_vout->p_sys->mask, + 0, NULL, codecFlagUseImageBuffer, codecLosslessQuality, p_vout->p_sys->img_dc ) ) ) @@ -765,7 +631,6 @@ static int QTCreateSequence( vout_thread_t *p_vout ) return( 1 ); } - return( 0 ); } @@ -916,7 +781,7 @@ static void QTFreePicture( vout_thread_t *p_vout, picture_t *p_pic ) newsize.width = (int) ( p_vout->render.i_width * factor ); newsize.height = (int) ( i_corrected_height * factor ); } - + [self setContentSize: newsize]; [self setFrameTopLeftPoint: topleftscreen]; @@ -1397,7 +1262,6 @@ static void QTFreePicture( vout_thread_t *p_vout, picture_t *p_pic ) } o_view = [[VLCView alloc] init]; - /* FIXME: [o_view setMenu:] */ [p_vout->p_sys->o_window setContentView: o_view]; [o_view autorelease]; -- 2.39.2