Skip to content

Commit d71a0a6

Browse files
authored
fix: card0 may not enabled/usable
(#42)
1 parent 33818ea commit d71a0a6

File tree

2 files changed

+8
-6
lines changed

2 files changed

+8
-6
lines changed

src/libdmr/compositing_manager.cpp

+7-5
Original file line numberDiff line numberDiff line change
@@ -259,9 +259,8 @@ void CompositingManager::overrideCompositeMode(bool useCompositing)
259259

260260
using namespace std;
261261

262-
bool CompositingManager::is_card_exists(const vector<string>& drivers) {
262+
bool CompositingManager::is_card_exists(int id, const vector<string>& drivers) {
263263
char buf[1024] = {0};
264-
int id = 0;
265264
snprintf(buf, sizeof buf, "/sys/class/drm/card%d/device/driver", id);
266265

267266
char buf2[1024] = {0};
@@ -307,9 +306,12 @@ bool CompositingManager::is_device_viable(int id) {
307306

308307
bool CompositingManager::isProprietaryDriver()
309308
{
310-
if (is_device_viable(0)) {
311-
vector<string> drivers = {"nvidia", "fglrx", "hibmc-drm"};
312-
return is_card_exists(drivers);
309+
for (int id = 0; id <= 10; id++) {
310+
if (!QFile::exists(QString("/sys/class/drm/card%1").arg(id))) break;
311+
if (is_device_viable(id)) {
312+
vector<string> drivers = {"nvidia", "fglrx", "hibmc-drm"};
313+
return is_card_exists(id, drivers);
314+
}
313315
}
314316

315317
return false;

src/libdmr/compositing_manager.h

+1-1
Original file line numberDiff line numberDiff line change
@@ -92,7 +92,7 @@ class CompositingManager: public QObject {
9292
bool isProprietaryDriver();
9393

9494
bool is_device_viable(int id);
95-
bool is_card_exists(const std::vector<std::string>& drivers);
95+
bool is_card_exists(int id, const std::vector<std::string>& drivers);
9696

9797
bool _composited {false};
9898
Platform _platform {Platform::Unknown};

0 commit comments

Comments
 (0)