From 295f6b4d68043c6e1be4ac225004ce06f9a9745d Mon Sep 17 00:00:00 2001 From: w1z7ard Date: Thu, 28 Feb 2008 04:19:25 +0000 Subject: [PATCH] thread safety goodness git-svn-id: https://projectm.svn.sourceforge.net/svnroot/projectm/trunk@849 6778bc44-b910-0410-a7a0-be141de4315d --- projectMTrunk.kdevelop.pcs | Bin 2076713 -> 2228443 bytes projectMTrunk.kdevses | 100 +++++------------- .../qprojectM-pulseaudio.cpp | 6 +- src/qprojectM/QProjectM_MainWindow.cpp | 15 ++- src/qprojectM/QProjectM_MainWindow.hpp | 5 +- 5 files changed, 40 insertions(+), 86 deletions(-) diff --git a/projectMTrunk.kdevelop.pcs b/projectMTrunk.kdevelop.pcs index 4b48711bd7a3e93443b530d84b55473d9069e0a0..c85c94831fd04225a7e7bd46e8def918aab50639 100644 GIT binary patch delta 51363 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 delta 12431 zcmb7q2Y3`!*YMt%ZL>SGJ3F)NZg!JRLKl=IqKE|&1O*{NP!L5*L_!ltsDe@gVklAq z3pvyfdJ7N;auE;$0@4XZlpdr=4FM5FlzivTY{2*R`=00j^E@|qPQB-zb8g*xX4E*c zqGW_(Fc{2+6hmXfyZFVRFG5FC+F0Mb5tU^yBu@^lYdhK6wCcTO21840=;+b$p}1Kl zYtuC&P8$pzh9aVZ3Xh?69GMp8z4!}*CWVr&A~TaFFNWY~ZEkuP`rZKvIeZx6>fZ#{ zbEYhv#!b$JQFAzimRDMB;HGB4s9nZEIW>4UWVZK))p2vYFsceaAuRH93as10XNNK@ zX09_2u@j_hox*SF$Hd2nW?AiA)urq^Y_M^{CRmqX8V*HCCR1peVCEi;Wr)$bpsCTj zaQDU&Xj*ef$lxnzkB>v6j^;3Ae%1^-o+YD08KRl%_zOC00HpqG_Jq=XVPnnH4p(3U zx_0yVws7}1@+GY8VPW1JzR6&T@-fteP?5vT_1+9S{;-7IV_Du5NJHy5i{?nnL-?p| zRGU!IyD^a0!dgjJXl--|$Wm)2>iW}auy*_|)aYXdgjN}>`3Z2eiD@JpDYvq=M$|J{ z_ts#jF${_}2nl;(#{yxpu3s1p7hC(fMDreo$%siTT_Iy9|!PVjzv22-TW2&)`&!!;a<7uUz; zAFVMsPuyYA84xND`pj#M=?3Q|xI0qLg0)*^bkV|N?;GU)J@qJit$|R(7&CWm5Ri_p z96dmC`3?q6g;rBsD8Pn}xBj;}NTN|vZTi0SXvGH1EL z9oz>~2e~zg6$W?PM{swbdwOVF9WysJl}Y63nk#(}gp0p=(xL28q&5my8Y<;Bf!02c zmedGcc^g~@J(#))X6~aGm{Dnvo#?Sa%e$T^YtwnJ_c3_(_GU^n(^nciKPAIO#T%CQ z{C*1Ve&C%R>RZ>$k=krRN`s7M-rCsyujdTjX8F+Qigzx$dAh;i-7}Rj4}~eO`wZ(XgDO#^EnwaqDEC`?n#5x&wM^;waix~)ahk2H>L#BBn?Wo z`<`J#Zf;3+WI4*Xifx%Y|ZqZhKSEzfQxPX7?^p9gA5VpI);4}X7z)d?#G_aOZ?p6Pr9lH zLesN-jURiu>}smPA5xx}V1qo>?}37CejHe7aMR#lcn=a(KgLCaHqD2G=)mWYAqT9G zevxriy|>oj-xh#%SNz(LL1^y>TEAnW0v;$i?RUV1n@>3R_s|=wAZi{&nX^B@QAc26 zDCTt&?=L&Rni&@=V8Gw)b%~UMfbJpY%Wn(;JB(^)>jsF{LX4PqK4l>ufu0Ga83Knp z>D@&JTj)@eDqK>>CyH#)IV-ZFpG;e1%0>8SY#^QCy{uD+n$wRdcsJ)-+d;n_F=^mHQT~#;jI@r39r$s?ie{-R8#K$pkFH2ZYQ@dH;BUCPOWD{63)^-pw zouiN`})Nefa^TF!lCq^}o2G^Mi% zI&nMWG_Tl_O=wYjC5F(Xrsg2> z>@aU4h4a2xPiV<*b5$eFyX#nKqWhQg4+s=k99hhijg`33BSr2Rg8M%9#~EPiH;A6W zDa3TuFmF{e>doQ)AkbrpDId1XhBekBpnU_>b|I9IuX#vCjw!5fhwR0LrTh2CPLSUZnB~UiQSQ;vMw>o_L2DcFM zQ=}Za?}j-w-qZu*kp)v{OJ4d$!15i>aRaC=+7gwFJ?giGkAR5_EjilG6V85O=|>1{ z+1v6K>#s&#yu>nFr>69^)PqFV>tuVp1MCXUa1KtIT^+?%X_wko$=Jw?Vo4O^=7 z-@e^sp(UBlJS|b(94(r{CmZz;o@inkMsZW>FC~+hj#hRm4-ItCM;OHs_P&Y6G*)^W zS=M(j)6CJ%nmiPrcZ{PO-&OoP5`)7C6u&KmGvQnnsWMMXYnV1-&hIeSpTFY~S#UzE-MK4 zRmIqG0I6gC3NqI#MjA-A|7g*N@f%hue`9&Yi1Wq-4zdS0=Y}#?^o96?4j)aK6my=0 zGFC3u8_=f_Efe%9sJM^4^Rry7Oqwv;UPj={MfOQh#zm=g$6R~5olKz#%kAr}WX#hD zjOHM3thkpJ?{QqULDz%A5Vpydq30g_m)1n?3o)l9H>Cc_`TiZMikUBdq!YcQO)O6b z8^yuq;8~Wx!eN3ZqjPtg|Lsvgk7m)t4C6f`EnXGl;c%LHjplu2FU6STI;(Ot)5i@n z(ew}HS~xT2*hNmaaL;S@W_U!g&xR#`*c+K^WnvZ^;Z6hlE?V%=ev;@I0>*y#zh3Pr-eg|^DBdOJu@)_Gt(Q1hrxxuN=ju3rZ!uoS zmF^dFG+a&}F`gM6dsO@w3P_X;Pe|~3UyVk;Js`S>u3=(&g@)iEai@;U&8Wb|9~QUi zxcq(tvYT~{|a35VlkJ_A0Rg6bZbiHC}x;^Ow47BR#-JyjME78*TLdV^aV~2 zw$CfZfCxMG3j-nV8H*SCq?(7*N}q`jP4HTlu#pX~cj}SNFm<&%nndC{BhHf=VURg2 ztj?wvsTlV(0ISJxU>NANSv>tTEcDzF71FMyW`rE)P?e!_i-#Dp3KWm#=X^?;=qIcNNuL(SiyX z&<$Z?ZB>LzTY~=}CiW5+>bh5lb+3j|yTdJ0jP?YhFh5M0507nT&2%>%v0ro$AumkH zgNq5OP64D?>BzpK8E1U#5oGNW>*)Q!DDQ{n`$du7KO}NQSQ?gI3hUNepSVN?jPfp+ zcmO+czs&RxTQSm0rG+SD#=`37nZIkW7E|HQmz)EHLE=)qH-%x{g%DeVSD}oGK9Eby zMu<5q%21IbOJT@vY^HLx7`+)t=`B`*&rXPQg;A)0Wyx4N^@8{^F%7}*#&D!WEQbz1 ziaA07!px3>obO!!=sDE+NxZM^Fqm*At$j+|O@wdo+l1vCcz9ZTgL%WO`ziU1m`aF| zu0AU^A~58HnESssOtIlb8W%j>0mT zb}tjx@?5VcC)m4i`yP>A_i25f5qoWtq;MC*fwli&gbQ{P$8WT%Iq@fCU#tFU`)AY&sJl zQwEeAM;-F-HX|HcEbY;?-Jgf+pS)GF(rrtmcZ?R6SNI36Ez)*4xl(EfMfs8$;x|fG zNK99&LuwDf0V!K0AM{-%Z7_93=H6^~RfRUsm$ErtGQ>cmVre*SzgAk#5nkU#r4&kT z8oypL6JpUY6fw<=JT^z?Q0ajww4##)yQWH=nA+uZ@iyr>9{2^yySfkd&XP9KzjjKw zoYra9pZ6)ZN2)~NW2+j$dVWUhG+?Lq(i?lF)&!ytNhT;+BMkvLTZx2*)1>Lpn}U? z=4T$4$Sa6g&K7}r`+c0k-I`mj-6ZfIG*n9MIP`lH5yjO zi!-6mLvzl5?+Ecolf2oyhiJPEntI8hzF^8So|)5(4)Hq2HMcDa2gyL-ZoYjmWOi{z zL+xJt0Lc5Bh>*0x>4Gi2c&D~&Cf&392g)?7Zs~G#+0*zKWpJ#i8K`Wi3IMZl;%C;o>DBro~ZRsYt_oc5K|B$aP zT;xrw=+H;bt3EvWTwG^4#M9?|@ z{>%GDHqkp<<)%EJhS`1hH{J*Hy34urPLUkNL%{&qNdvp&w+WOK%b(H4&%r`{h?)?H<_ytA3Ds!-f9xOm=r_ zg}Mjj1StC)b4<>W957|1{63uPFN<*Hp#1$4EjxAQ;fLh}V|$$D;PD{2T*rNL1QisV zM^$}$$tswN<9#E!DlgVWI-X!6PYnF~GkLR4_~Zw6ivI4@5yn%G+QEHrwc zRD&6pOhRh3sNC%&E`5N0zk1B>kBrHg^PJy9&gb+kkM)~-&f&?im?O(xx+Qtm+7MV7Q zR7&jdr4*f_{bn%b7v~Ga0PAYTw1s$3>RYM}xM`@F+#{56tpMuJF?~xvaEUpD4t-W> z?46NHX8$`M|I+fx&(SGya#ce2H&;?D(B__V5nR9RwA1NhoNhdph0kf*g3#n!PZrG{ zpj>sDV$dx-BwSHeLHq>8D*cKuL$SIo99^r_*XBi>f@(p0RosHC8HY)+XNX@Vy5n*?j zuvZuBYE?JuEnN*0u00{(wklg$Dm(}i{(weXcrUaZqg2xzBQH>@LsEU>fY+vCFaL0= zIgqhjvC`6MN)izU>tb94(-%kUS5nO!WacSWAu>#v0;#TOFECF)QI4`w=%^ELI$$EY z^ZtH4(hV(VDK=Q@Q^)D1^2ldH_uFZonaX%h+ixI>=b(JH@;zjXRs3upxYovtVNR9K znyaJ{;hf$Af0?!L5?~kJ!}FOsTQgkSiZF%^8kOFPR&8Nt_Y2ESqf_&gp+ukvqXp!{ ze^}b4idvxQArqk1QWC9s9nk9zcyA&4aaLHz%73)oY>Bc#xDh7YVgxPtwIK5+QGvem zVr@`wl``JO7lnDg(}jmEQ<5PsH`WNA70N>G1cD6wHrTO3Il>Mo&%?=hH5J-ij`cx) zt}=l-)+if^a6hc(KCBs!rwkTL*j;XNfxkd`Xy-nz7|k-YUa!PJd5q|!Z?98;z>-Ve zno!bMvD3@zmDxO~cD#p|A1KweLF;JpKDel|udsh^S6szj6aM6%UQYhULQvmG)7x+y z-a#Hz21W?Ib%P9p=jf4<0ZTt9s3vG#ugYU9F!Y8(g@H(5 z8{vWQ@=fKoz)l4CM`EGhUUwCE=a!NSWxp#%6I)v6K)-FMK)$V<)?&)0*I9Tk?5F|$ zQYBxQi7-13&V(bS%06w+&A{2P;EwVw#NSnn0^6vv&9D{L{i?*m#4=^EFau!;%M5T8 zSyh;PU#Sdz?})1J7z80o-@_cV8=;R z9sC1Lof^hXWumcAyim15{ArgJPL4rGWgZ|_VGpu6vFw3W50x1ZpNl8=z7eXGZv9gE zjOaXU5HZhCdg_s~lQ^{GLxfg0hoe)J8j!I}F)~3LJ^#1Tfe4SoGLNBgxv~?E{G~+T zESm2+f_T;*tE*#a0;Daig8Tcoi5e+w5a>S$(S1PrsPD}@bV!Uh^AsJPK7yM?LeLgZLT zj8Nm~2Ai5kgcFEh`FK*#$EV8c)l-XwV`1tsaK5B|%^PYhhVNfem%yJ+b*?Z1iEL^d z0i$>{sbq@cW1be_q^v%WMuw@Zo(H3Hl-ks&sDE+7Z-`(9{|1dt*}QCiQz3nsVj^ZJ zyW;Fl^D3!JiSS35>kmlyF;?SJNF7Kh76b6GQKX_z<^^7LqQq7frjOO$aJ+r$9x@7s z+tdUtX(+}X7n9M*!5lCe?j91uEwk7|(rjgo7B86lH`-rVO>i^26q2r=eQ+6AuF<70 z!YWw(lGYe4iBydQ+HV&nxErNzgbR_X6OwY3Qphl=qKTPyA4WX#Kkcf-76paCwL_w4 zs)6)kxcCUYP&rmT&+P3A-4-Zw^&A@$Zg32^s;JNCLtwe$bOSCFn}kzHWjS+7pN^hJ zZ*M%VsJLK+2hvjHVTLRPdo|3w3KQ{oT0`9+eTNj5_N=Z2Z`D*=K=1LmEdR&yfjc%f zBsU`u)3h0uJfrS{xLm~v+B$;!N1S25z%{(2mO9auALe6q0+y4oV6IXLB9}-a9;V?6_dr@8V|2-He4u(emxBVmny1%T> z6WFZ=Mu|j$^oshua27#3ma}l~6*bQ8FnnYfZ0K$nXy^%}h&uI|>pHuE)oe1Yj@KYD zhHkh{ePrlkNHYvTC-9TLldCgR#$%nQ&>5C23XNaI61A`UXJyHFD2rN!A z!Xn+5#QH8EjJboG8TEBFmDmW62pnXDr^6eo%@D!zlOfFXNE3Ac5pE&OaJQhvo9f$k z(a_hBZs>u1>kmgob&7N+OlLK|t9VVVVoEpkHgtu4mDQX`!mfarGg-|7Y(sA}z>;8i z6-ITkM#Jnk)x`pvFPT}DplMTeI~?haXQoHZ)JX#NMYG>Wr@p23AwnPw2dJfm+KLEg z5N5$S1D%uA1j&Qm?t}KFV|aQn3qWGKKW0CxU9h8rH5M}N7>)LUtP9B2CLG5~7a0Q< zR{OEEK`Yxp!YoM*V5|)v8$QuOIT+=78wO!OW3ZWSkbBWz89skgwL|^xY7F#vTg?-0 zqd05xHVftMoJtrZ2A0Bwmg+ZPZHd>mi(9E1g{xt{tMua()lQ_I2ph4m+6nz)IS-xM zT7AuhJ102OMcs;*JKF1y-?5e)Tg;GB>Lh)SANIP^_7ZS1^ z%6q7Z;Lf$;X&WERz@U>ZH$C1{9Za6GHt4PX#zCttsstl?s3Su$?-x?9qM>=*WJgGxl40F#QBnF(B z?ge!82=`Zn|Gi-pl{4Kf1SpwcHo=IY?v{{}uO`E@t5w^^b?OTQ>VM_lA4+}C3@O9h zR@(AwhAaBYU4?d^TEh}x_hXZ z?_>A~909H<{2oBfLMmXw00zL76?$iG|dK-WE{M z!jlChRr$GNQ<6M1CCS^XI%=3cs2S66*`v#jMOl>hl{RMDzgSKiUiRGL=;7VI)FY%V zjhhh>(~`8JDVHMfF1Zf48bsEFQ$t`Ql2g4_`1NXpmo$cTMbVX^pqs}G1ugx# z?2(I)UjHTH!2pi8P`vGI)?Dv`E|mG}&>wI4 zUnEb#My3Aeo`Ue{V>IKv?~Glb;z5h{+Qmu-l=<&4z6kpHJ^xq^zwGch+b2WRZ~hBR z9pxYR)8a`0j;wN~vsWxtA?b?OxUoiHcLONy=P}dbIDQ&o6nys5!JCK&&0r0<@e=k- z!NJ*%D-aiW`U0H+|Ki&KCbxrrriopG3w0-zzd&Ps+>-xIdnK*K_#^ zwLvH)$C9(fZ-owB)P5Xag`WK+@?KN8^AcXu7Ts~#V1BXxn*RHuQ}&M51uNd&m|@b_ zk)D7&wb9%Qk&E#ajfeC#veDB^hTld; zeW{P0X0KUO*h3*GNc7~vq&K3*<*W&eV;>jbPGLZTn6%)q{{-KM_;mpv^oj}Sl6g%$ zois^Uvp&#G|H^pNbL`0%j{WC&2mPQ$6uv5{$Qbm=leUX$@kU7fCeQ`U?ZW0{WCWW) zr?)*_AZlRLIGV8~fDbJa--+4|Df_)q5YwEGr1QE*37B{Ly>;PK51kSXec$o8X;`(j}IQ@*6V zfm=@@O-g*7PlSxGy%sp!!Bax#r$+sb9Sj6bP<${j1aDKL#=+r3sO0UgQTw3t+a4#3 zXvsIkXLSJ)@{VBg4oyS5HNqM$3V((e8;tpX=w%d~KaLSVcZ|bnHMrqPOVc5yrzfZr zN>2uI039(7N_u%#>MU|^&rIg4aZsm^CkKA$hhJhSIE>=gFJaS5hT`kJ%=h?rnCJIt z-O0HSmTcR)kVR+ z<{3Ga-P4X5A#PbPo}T+U*n`0KML`qWpVZY>P&}-+u8o&7Yd0gq_*KC@gw&uZtAmxz zw9~Sn%E5(AK`V~&U@OiLL(hL5+(ziQRl&xDBB7kU0D!5##H#ey&B40bdw`l-gR41Q zGfr*`_Qx~O`Je+ - - - + + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -95,9 +38,18 @@ + + + + + + + + + diff --git a/src/qprojectM-pulseaudio/qprojectM-pulseaudio.cpp b/src/qprojectM-pulseaudio/qprojectM-pulseaudio.cpp index a90a86bc2..f36ae1b3c 100644 --- a/src/qprojectM-pulseaudio/qprojectM-pulseaudio.cpp +++ b/src/qprojectM-pulseaudio/qprojectM-pulseaudio.cpp @@ -103,15 +103,15 @@ int main ( int argc, char*argv[] ) QPulseAudioThread * pulseThread = new QPulseAudioThread(argc, argv, mainWindow->qprojectM(), mainWindow); - mainWindow->getQProjectMWidget()->setAudioMutex(pulseThread->mutex()); + mainWindow->qprojectMWidget()->setAudioMutex(pulseThread->mutex()); // First projectM_Initialized() has already happened, so manually start pulseThread->start(); QApplication::connect - (mainWindow->getQProjectMWidget(), SIGNAL(projectM_Initialized(QProjectM *)), pulseThread, SLOT(projectM_New(QProjectM*))); + (mainWindow->qprojectMWidget(), SIGNAL(projectM_Initialized(QProjectM *)), pulseThread, SLOT(projectM_New(QProjectM*))); QApplication::connect - (mainWindow->getQProjectMWidget(), SIGNAL(projectM_BeforeDestroy()), pulseThread, SLOT(cork())); + (mainWindow->qprojectMWidget(), SIGNAL(projectM_BeforeDestroy()), pulseThread, SLOT(cork())); QPulseAudioDeviceChooser devChooser(pulseThread, mainWindow); QApplication::connect(&pulseAction, SIGNAL(triggered()), &devChooser, SLOT(open())); diff --git a/src/qprojectM/QProjectM_MainWindow.cpp b/src/qprojectM/QProjectM_MainWindow.cpp index c98925aac..076bb82f2 100644 --- a/src/qprojectM/QProjectM_MainWindow.cpp +++ b/src/qprojectM/QProjectM_MainWindow.cpp @@ -93,7 +93,8 @@ QProjectM_MainWindow::QProjectM_MainWindow ( const std::string & config_file, QM connect(ui->tableView, SIGNAL(resized(QResizeEvent *)), this, SLOT(refreshHeaders(QResizeEvent*))); - connect ( m_QProjectMWidget, SIGNAL ( projectM_Initialized(QProjectM*) ), this, SLOT ( postProjectM_Initialize() ) ); + connect ( m_QProjectMWidget, SIGNAL ( projectM_Initialized(QProjectM*) ), + this, SLOT ( postProjectM_Initialize() ) ); m_QProjectMWidget->makeCurrent(); m_QProjectMWidget->setFocus(); @@ -356,7 +357,7 @@ void QProjectM_MainWindow::closeEvent ( QCloseEvent *event ) void QProjectM_MainWindow::addPresets() { - + /// @bug this probably isn't thread safe if ( m_QPresetFileDialog->exec() ) { const QStringList & files = m_QPresetFileDialog->selectedFiles(); @@ -382,7 +383,7 @@ void QProjectM_MainWindow::addPresets() updateFilteredPlaylist ( previousFilter ); ui->presetPlayListDockWidget->setWindowModified ( true ); } - + //playlistModel->setHeaderData(0, Qt::Horizontal, tr("Preset"));//, Qt::DisplayRole); } void QProjectM_MainWindow::savePlaylist() @@ -456,6 +457,7 @@ void QProjectM_MainWindow::openPlaylist() void QProjectM_MainWindow::copyPlaylist() { + qprojectMWidget()->seizePresetLock(); PlaylistItemVector * items = new PlaylistItemVector(); for ( long i = 0; i < playlistModel->rowCount(); i++ ) @@ -480,7 +482,7 @@ void QProjectM_MainWindow::copyPlaylist() activePresetIndex->nullify(); qDebug() << "NULLIFIED"; } - + qprojectMWidget()->unseizePresetLock(); } @@ -621,6 +623,9 @@ QString QProjectM_MainWindow::strippedName ( const QString &fullFileName ) void QProjectM_MainWindow::updateFilteredPlaylist ( const QString & text ) { + + qprojectMWidget()->seizePresetLock(); + const QString filter = text.toLower(); unsigned int presetIndexBackup ; bool presetSelected = qprojectM()->selectedPresetIndex(presetIndexBackup); @@ -694,6 +699,6 @@ void QProjectM_MainWindow::updateFilteredPlaylist ( const QString & text ) assert(presetExistsWithinFilter == qprojectM()->presetPositionValid()); previousFilter = filter; - + qprojectMWidget()->unseizePresetLock(); } diff --git a/src/qprojectM/QProjectM_MainWindow.hpp b/src/qprojectM/QProjectM_MainWindow.hpp index 4117ca949..c3dea9d2f 100644 --- a/src/qprojectM/QProjectM_MainWindow.hpp +++ b/src/qprojectM/QProjectM_MainWindow.hpp @@ -94,13 +94,10 @@ class QProjectMWidget : public QGLWidget qprojectM()->setPresetLock(m_presetWasLocked); m_presetSeizeMutex.unlock(); } - inline QProjectM * qprojectM() { return m_projectM; } public slots: - - void resetProjectM() { qDebug() << "reset start"; @@ -301,7 +298,7 @@ public: QProjectM * qprojectM(); void refreshPlaylist(); - QProjectMWidget * getQProjectMWidget() { return m_QProjectMWidget; } + QProjectMWidget * qprojectMWidget() { return m_QProjectMWidget; } void registerAction(const QAction &);