Ticket #5570: 5570-quartz-v4.patch
File 5570-quartz-v4.patch, 7.1 KB (added by , 16 years ago) |
---|
-
libs/libmythtv/videoout_quartz.cpp
36 36 // **************************************************************************** 37 37 38 38 #include <map> 39 #include <vector> 39 40 #include <iostream> 41 #include <algorithm> 40 42 using namespace std; 41 43 42 #include <q3ptrlist.h>43 44 44 #include "DisplayRes.h" 45 45 #include "yuv2rgb.h" 46 46 #include "uitypes.h" … … 99 99 100 100 embeddedView(NULL), dvdv(NULL) 101 101 {;} 102 ~QuartsData() { ClearViews(); } 102 103 104 void ClearViews(void) 105 { 106 vector<VideoOutputQuartzView*>::iterator it = views.begin(); 107 for (; it != views.end(); ++it) 108 delete *it; 109 views.clear(); 110 } 111 103 112 // Stored information about the media stream: 104 113 int srcWidth, 105 114 srcHeight; … … 132 141 int ZoomedRight; // VideoOutputBase::mz_move.x() 133 142 134 143 // Output viewports: 135 Q3PtrList<VideoOutputQuartzView> views; // current views144 vector<VideoOutputQuartzView*> views; // current views 136 145 137 146 // Embedding: 138 147 VideoOutputQuartzView * embeddedView; // special embedded widget … … 1205 1214 myth_codec_id(_myth_codec_id) 1206 1215 { 1207 1216 init(&pauseFrame, FMT_YV12, NULL, 0, 0, 0, 0); 1208 1209 data->views.setAutoDelete(true);1210 1211 1217 SetDVDVDecoder((DVDV*)codec_priv); 1212 1218 } 1213 1219 … … 1234 1240 data->srcAspect = aspect; 1235 1241 data->srcMode = db_aspectoverride; 1236 1242 1237 VideoOutputQuartzView *view = NULL;1238 for ( view = data->views.first(); view; view = data->views.next())1239 view->VideoAspectRatioChanged(aspect);1243 vector<VideoOutputQuartzView*>::iterator it = data->views.begin(); 1244 for (; it != data->views.end(); ++it) 1245 (*it)->VideoAspectRatioChanged(aspect); 1240 1246 } 1241 1247 1242 1248 // this is documented in videooutbase.cpp … … 1252 1258 data->ZoomedUp = mz_move.y(); 1253 1259 data->ZoomedRight = mz_move.x(); 1254 1260 1255 for (VideoOutputQuartzView *view = data->views.first(); 1256 view; 1257 view = data->views.next()) 1258 { 1259 view->Zoom(direction); 1260 } 1261 vector<VideoOutputQuartzView*>::iterator it = data->views.begin(); 1262 for (; it != data->views.end(); ++it) 1263 (*it)->Zoom(direction); 1261 1264 } 1262 1265 1263 1266 bool VideoOutputQuartz::InputChanged(const QSize &input_size, … … 1310 1313 1311 1314 CreateQuartzBuffers(); 1312 1315 1313 for (VideoOutputQuartzView *view = data->views.first(); 1314 view; 1315 view = data->views.next()) 1316 vector<VideoOutputQuartzView*>::iterator it = data->views.begin(); 1317 for (; it != data->views.end(); ++it) 1316 1318 { 1317 view->InputChanged(1319 (*it)->InputChanged( 1318 1320 video_dim.width(), video_dim.height(), aspect, av_codec_id); 1319 1321 } 1320 1322 … … 1441 1443 // Fullscreen will take over everything 1442 1444 tmp = new VoqvFullscreen(data); 1443 1445 tmp->SetFrameSkip(gContext->GetNumSetting("MacFullSkip", 0)); 1444 data->views. append(tmp);1446 data->views.push_back(tmp); 1445 1447 } 1446 1448 else if (!data->windowedMode) 1447 1449 { 1448 1450 // Full GUI is hidden, only show the main window 1449 1451 tmp = new VoqvMainWindow(data, 1.0); 1450 1452 tmp->SetFrameSkip(gContext->GetNumSetting("MacFullSkip", 0)); 1451 data->views. append(tmp);1453 data->views.push_back(tmp); 1452 1454 } 1453 1455 else 1454 1456 { … … 1459 1461 gContext->GetNumSetting("MacMainOpacity", 100) / 100.0; 1460 1462 tmp = new VoqvMainWindow(data, opacity); 1461 1463 tmp->SetFrameSkip(gContext->GetNumSetting("MacMainSkip", 0)); 1462 data->views. append(tmp);1464 data->views.push_back(tmp); 1463 1465 } 1464 1466 else 1465 1467 { … … 1474 1476 gContext->GetNumSetting("MacFloatOpacity", 100) / 100.0; 1475 1477 tmp = new VoqvFloater(data, opacity); 1476 1478 tmp->SetFrameSkip(gContext->GetNumSetting("MacFloatSkip", 0)); 1477 data->views. append(tmp);1479 data->views.push_back(tmp); 1478 1480 } 1479 1481 if (gContext->GetNumSetting("MacDesktopEnabled", 0)) 1480 1482 { 1481 1483 tmp = new VoqvDesktop(data); 1482 1484 tmp->SetFrameSkip(gContext->GetNumSetting("MacDesktopSkip", 0)); 1483 data->views. append(tmp);1485 data->views.push_back(tmp); 1484 1486 } 1485 1487 if (gContext->GetNumSetting("MacDockEnabled", 1)) 1486 1488 { 1487 1489 tmp = new VoqvDock(data); 1488 1490 tmp->SetFrameSkip(gContext->GetNumSetting("MacDockSkip", 3)); 1489 data->views. append(tmp);1491 data->views.push_back(tmp); 1490 1492 } 1491 1493 } 1492 1494 1493 for (VideoOutputQuartzView *view = data->views.first(); 1494 view; 1495 view = data->views.next()) 1495 vector<VideoOutputQuartzView*>::iterator it = data->views.begin(); 1496 for (; it != data->views.end(); ++it) 1496 1497 { 1497 if (!view->Init())1498 1498 if (!(*it)->Init()) 1499 { 1499 1500 puts("Init failed on view"); 1500 1501 } 1501 1502 } 1502 1503 1503 1504 MoveResize(); … … 1635 1636 &(data->windowBounds)); 1636 1637 } 1637 1638 1638 data-> views.clear();1639 data->ClearViews(); 1639 1640 DeleteQuartzBuffers(); 1640 1641 } 1641 1642 } … … 1683 1684 data->pixelLock.lock(); 1684 1685 1685 1686 // warn other views that embedding is starting 1686 for (VideoOutputQuartzView *view = data->views.first(); 1687 view; 1688 view = data->views.next()) 1687 vector<VideoOutputQuartzView*>::iterator it = data->views.begin(); 1688 for (; it != data->views.end(); ++it) 1689 1689 { 1690 view->EmbedChanged(true);1690 (*it)->EmbedChanged(true); 1691 1691 } 1692 1692 1693 1693 // create embedded widget … … 1695 1695 if (data->embeddedView) 1696 1696 { 1697 1697 data->embeddedView->Init(); 1698 data->views. append(data->embeddedView);1698 data->views.push_back(data->embeddedView); 1699 1699 } 1700 1700 1701 1701 data->pixelLock.unlock(); … … 1716 1716 // delete embedded widget 1717 1717 if (data->embeddedView) 1718 1718 { 1719 data->views.removeRef(data->embeddedView); 1719 vector<VideoOutputQuartzView*>::iterator it = 1720 find(data->views.begin(), data->views.end(), data->embeddedView); 1721 if (it != data->views.end()) 1722 { 1723 delete *it; 1724 data->views.erase(it); 1725 } 1720 1726 data->embeddedView = NULL; 1721 1727 } 1722 1728 1723 1729 // tell other views to return to normal 1724 for (VideoOutputQuartzView *view = data->views.first(); 1725 view; 1726 view = data->views.next()) 1727 { 1728 view->EmbedChanged(false); 1729 } 1730 vector<VideoOutputQuartzView*>::iterator it = data->views.begin(); 1731 for (; it != data->views.end(); ++it) 1732 (*it)->EmbedChanged(false); 1730 1733 1731 1734 data->pixelLock.unlock(); 1732 1735 } … … 1765 1768 #endif // USING_DVDV 1766 1769 1767 1770 data->pixelLock.lock(); 1768 for (VideoOutputQuartzView *view = data->views.first(); 1769 view; 1770 view = data->views.next()) 1771 { 1772 view->Show(); 1773 } 1771 vector<VideoOutputQuartzView*>::iterator it = data->views.begin(); 1772 for (; it != data->views.end(); ++it) 1773 (*it)->Show(); 1774 1774 data->pixelLock.unlock(); 1775 1775 } 1776 1776