LINUX.ORG.RU

Сообщения summon

 

Доступ к QML из Qt и наоборот

Форум — Development

Допустим, я хочу в программе активно сообщать QML и Qt и хочу сделать некоторый API, который бы дергал как QML код так и Qt код. Судя по всему есть три варианта.

  • Я пишу QML объекты и для доступа из Qt дергаю в коде их свойства по именам.
  • Я делаю производные от QObjectов с Q_PROPERTY и загружаю их в QML Engine.
  • Я делаю QML объекты и делаю производные QObjectов и пишу отдельный модуль для того, чтобы связать QML объекты с QObjectами и дергаю QObjectы из Qt и QML объекты из QML.

В первом случае мне не нравится тот факт, что я в статический типизированном языке, в большей части программы я буду костыляться с динамической природой QML и всюду будет куча левого кода, а если левого кода не будет, то будет куча ненадежного кода.

Во втором случае мне не нравится то, что в QML коде я не смогу явно увидеть API и без отдельной документации нужно будет лезть в C++ код, чтобы понять какие свойства есть у объекта.

В третьем случае мне не нравится то, что мне придеться дублировать по сути одно и тоже API в QML коде и в C++ коде и придеться править больше кода при смене интерфейса. Это не критично если каждый метод API дергается в 100 разных местах (но критично дергать методы в 100 разных местах), но, обычно, люди стараются так не делать и каждый метод будет вызываться в одном - двух местах. По этому, по факту, это просто в два раза больше работы чем в первом или втором случае.

Кто писал на Qt + QML, как лучше сделать? Или я просто не могу найти бритву?

 ,

summon
()

Греется жесткий диск на ноутбуке

Форум — Linux-hardware

Ноутбук работал без нареканий около полугода. На обычной подставке можно было нагружать его чем угодно и все было хорошо, но температуру не замерял.

Недавно (несколько месяцев назад) он начал выключаться при нагрузке во время игр. Понятное дело пошел смотреть температуру. На нагрузке дискретная видеокарта и процессор греются в худшем случае градусов до 75 - 80. Решил глянуть температуру жестких дисков. Вот температура при обычной работе:

/dev/sda: KINGSTON SH103S3120G: 42°C or °F

/dev/sdb: WDC WD10JPVT-75A1YT0: 49°C

Attribute 'GPUCoreTemp' (DellPC:8.0): 34.

Core 0: +47.0°C (high = +87.0°C, crit = +105.0°C)

Core 1: +37.0°C (high = +87.0°C, crit = +105.0°C)

Core 2: +44.0°C (high = +87.0°C, crit = +105.0°C)

Core 3: +44.0°C (high = +87.0°C, crit = +105.0°C)

Жесткий диск нагрет даже больше, чем остальные элементы ноутбука. По спецификации на него - до 50ти градусов нормальный режим работы, но даже во время обычной работы температура уже близка к выходу за пределы рабочей температуры.

Во время игр винчестер греется до 63 - 65 и, похоже, ноутбук просто отключается от этого.

Разобрал, прочистил от пыли вентилятор (пыли было очень мало), и это не помогло. Менял местами жесткие диски - не помогло.

Может кто сталкивался с такой проблемой и как-то ее решил? Может имеет смысл как-то принудительно ставить жесткий диск в режим энергосбережения во время таких нагрузок? Как это сделать так, чтобы диск не дергался постоянно.

summon
()

Gentoo laptop videocards

Форум — Desktop

Привет всем. У меня есть достаточно современный ноутбук, на котором есть две видеокарты. Одна от nvidia и одна от intel. На него я хочу поставить gentoo. И у меня возник вопрос, который пока не удалось решить. При попытке запустить X с драйверами от nvidia пишет «No screen found». После размышлений я пришел к выводу, что это вполне логично, если у меня сейчас система использует видеокарту от Intel.

Далее я тчетно пытался заставить выводить что-либо на экран через видеокарту от nvidia (хотя бы через nouveau). Пусть даже пока без X сервера. Я пытался передавать параметры ядру при загрузке, в частности

nouveau.modeset=1
i915.modeset=0

где i915 - модуль драйверов для intel собранный при сборке ядра

После я пытался сделать аналогичные телодвижения через modprobe.d, в котором я делал тоже самое. Плюс пытался заблеклистить i915 чтобы он не загружался.

При всех этих попытках у меня просто слетало разрешение экрана на минимум но, судя по всему, карточка от nvidia не работала, а рисовалось все минимальными возможностями ядра через intel.

Далее я собрал ядро с поддержкой vgaswitcheroo.

Если загружать модули nouveau и i915 то vgaswitcheroo обнаруживает две видеокарты и начинает свою работу.

#lsmod
Module                  Size  Used by
nouveau               863603  0 
ttm                    61215  1 nouveau
dcdbas                  5089  0 
btusb                  11578  0 
bluetooth             185002  2 btusb
i915                  482726  1 
i2c_i801                9268  0 
drm_kms_helper         25131  2 nouveau,i915

#cat /sys/kernel/debug/vgaswitcheroo/switch
0:IGD:+:Pwr:0000:00:02.0
1:DIS: :Pwr:0000:01:00.0

Далее пробую переключить

#echo "DDIS" > /sys/ker...oo/switch

И у меня перестает что-либо рисоваться на экране. Экран просто зависает. Подсоединяюсь по ssh и проверяю - все верно, выбрана дискретная видеокарта и интегрированная отключена. Смотрю

#dmesg | tail
[ 1913.185499] fbcon: Remapping primary device, fb0, to tty -63
[ 1913.196222] [drm] Cannot find any crtc or sizes - going 1024x768
[ 1913.196224] i915: switched off
Поскольку на экране ничего не рисутеся, то включаю обратно дискретную. Экран моргает и все снова работает.
#dmesg | tail
[ 2855.404055] i915: switched on
[ 2855.414190] i915 0000:00:02.0: setting latency timer to 64
[ 2855.448716] [drm] Enabling RC6 states: RC6 on, RC6p on, RC6pp off
[ 2855.994831] fbcon: Remapping primary device, fb0, to tty 1-63
[ 2855.994834] VGA switcheroo: switched nouveau off
[ 2855.995013] [drm] nouveau 0000:01:00.0: Disabling display...
[ 2855.995196] [drm] nouveau 0000:01:00.0: Disabling fbcon...
[ 2855.995198] [drm] nouveau 0000:01:00.0: Unpinning framebuffer(s)...
[ 2855.995285] [drm] nouveau 0000:01:00.0: Evicting buffers...
[ 2856.002018] [drm] nouveau 0000:01:00.0: Idling channels...
[ 2856.002019] [drm] nouveau 0000:01:00.0: Suspending GPU objects...
[ 2856.118746] [drm] nouveau 0000:01:00.0: And we're gone!
[ 2856.333947] nouveau 0000:01:00.0: power state changed by ACPI to D3hot
Если опять на nvidia, то так как устройство снова включается, что
#dmesg
[ 3003.622213] VGA switcheroo: switched nouveau on
[ 3003.622218] [drm] nouveau 0000:01:00.0: We're back, enabling device...
[ 3004.040116] nouveau 0000:01:00.0: power state changed by ACPI to D0
[ 3004.050881] [drm] nouveau 0000:01:00.0: POSTing device...
[ 3004.050885] [drm] nouveau 0000:01:00.0: Parsing VBIOS init table 0 at offset 0x850B
[ 3004.131703] [drm] nouveau 0000:01:00.0: Parsing VBIOS init table 1 at offset 0x8D1D
[ 3004.194586] [drm] nouveau 0000:01:00.0: Parsing VBIOS init table 2 at offset 0x6594
[ 3004.194587] [drm] nouveau 0000:01:00.0: Parsing VBIOS init table 3 at offset 0xA72B
[ 3004.194588] [drm] nouveau 0000:01:00.0: Parsing VBIOS init table 4 at offset 0xA72C
[ 3004.314513] [drm] nouveau 0000:01:00.0: Parsing VBIOS init table 5 at offset 0xA7E4
[ 3004.314514] [drm] nouveau 0000:01:00.0: Parsing VBIOS init table at offset 0xA849
[ 3004.314516] [drm] nouveau 0000:01:00.0: Restoring GPU objects...
[ 3004.322338] [drm] nouveau 0000:01:00.0: Reinitialising engines...
[ 3004.322344] [drm] nouveau 0000:01:00.0: Restoring mode...
[ 3004.424473] fbcon: Remapping primary device, fb1, to tty 1-63
[ 3004.435193] [drm] Cannot find any crtc or sizes - going 1024x768
[ 3004.435196] i915: switched off
Если опять передавать параметрами modeset и блеклистить intel, то vgaswitcheroo просто не загружется, так как, видимо, не находит, что именно можно переключать.

В итоге я не знаю, что делать и как заставить работать карточку от nvidia. Хотел отключить в bios карточку от intel, но в биосе тупо нет возможности это сделать.

Может сталкивался кто с такой проблемой? Что делать? Желательно бы иметь работающие две карточки, чтобы можно было переключать их, пусть и с рестартом x сервера.

Вот некоторые параметры железа и логи:

#lspci | grep VGA
00:02.0 VGA compatible controller: Intel Corporation 3rd Gen Core processor Graphics Controller (rev 09)
01:00.0 VGA compatible controller: NVIDIA Corporation GK107 [GeForce GT 650M] (rev a1)

#dmesg | grep -i vga
[0.000000] Console: colour VGA+ 80x25
[0.291324] vgaarb: device added: PCI:0000:00:02.0,decodes=io+mem,owns=io+mem,locks=none
[0.291475] vgaarb: device added: PCI:0000:01:00.0,decodes=io+mem,owns=none,locks=none
[0.291620] vgaarb: loaded
[0.291712] vgaarb: bridge control possible 0000:01:00.0
[0.291810] vgaarb: no bridge control possible 0000:00:02.0
[2.394070] VGA switcheroo: detected Optimus DSM method \_SB_.PCI0.PEG0.PEGP handle
[2.416790] vgaarb: device changed decodes: PCI:0000:00:02.0,olddecodes=io+mem,decodes=none:owns=io+mem
[2.416791] vgaarb: transferring owner from PCI:0000:00:02.0 to PCI:0000:01:00.0
[3.466109] vga_switcheroo: enabled
#dmesg | grep nouveau
[    2.394089] nouveau 0000:01:00.0: enabling device (0006 -> 0007)
[    3.460320] [drm] nouveau 0000:01:00.0: Detected an NVe0 generation card (0x0e7110a2)
[    3.462399] [drm] nouveau 0000:01:00.0: acceleration disabled by default, pass noaccel=0 to force enable
[    3.466116] [drm] nouveau 0000:01:00.0: Checking PRAMIN for VBIOS
[    3.514166] [drm] nouveau 0000:01:00.0: ... BIOS signature not found
[    3.514168] [drm] nouveau 0000:01:00.0: Checking PROM for VBIOS
[    3.514222] [drm] nouveau 0000:01:00.0: ... BIOS signature not found
[    3.514223] [drm] nouveau 0000:01:00.0: Checking ACPI for VBIOS
[    4.349168] [drm] nouveau 0000:01:00.0: ... BIOS checksum invalid
[    4.349172] [drm] nouveau 0000:01:00.0: Checking PCIROM for VBIOS
[    4.349173] [drm] nouveau 0000:01:00.0: ... BIOS signature not found
[    4.349174] [drm] nouveau 0000:01:00.0: Using VBIOS from ACPI
[    4.349176] [drm] nouveau 0000:01:00.0: BIT BIOS found
[    4.349178] [drm] nouveau 0000:01:00.0: Bios version 80.07.35.00
[    4.349180] [drm] nouveau 0000:01:00.0: TMDS table version 2.0
[    4.349335] [drm] nouveau 0000:01:00.0: MXM: no VBIOS data, nothing to do
[    4.349336] [drm] nouveau 0000:01:00.0: DCB version 4.0
[    4.349338] [drm] nouveau 0000:01:00.0: DCB outp 00: 02000f00 00000000
[    4.349340] [drm] nouveau 0000:01:00.0: DCB conn 00: 00000000
[    4.349355] [drm] nouveau 0000:01:00.0: Adaptor not initialised, running VBIOS init tables.
[    4.349357] [drm] nouveau 0000:01:00.0: Parsing VBIOS init table 0 at offset 0x850B
[    4.450309] [drm] nouveau 0000:01:00.0: Parsing VBIOS init table 1 at offset 0x8D1D
[    4.513196] [drm] nouveau 0000:01:00.0: Parsing VBIOS init table 2 at offset 0x6594
[    4.513197] [drm] nouveau 0000:01:00.0: Parsing VBIOS init table 3 at offset 0xA72B
[    4.513198] [drm] nouveau 0000:01:00.0: Parsing VBIOS init table 4 at offset 0xA72C
[    4.633126] [drm] nouveau 0000:01:00.0: Parsing VBIOS init table 5 at offset 0xA7E4
[    4.633127] [drm] nouveau 0000:01:00.0: Parsing VBIOS init table at offset 0xA849
[    4.635754] [drm] nouveau 0000:01:00.0: Detected 2048MiB VRAM (GDDR5)
[    4.640632] [drm] nouveau 0000:01:00.0: 512 MiB GART (aperture)
[    4.645112] [drm] nouveau 0000:01:00.0: ACPI backlight interface available, not registering our own
[    4.645114] [drm] nouveau 0000:01:00.0: voltage table 0x50 unknown
[    4.651178] [drm] nouveau 0000:01:00.0: 3 available performance level(s)
[    4.651181] [drm] nouveau 0000:01:00.0: 1: core 202MHz shader 405MHz memory 405MHz voltage 490mV
[    4.651183] [drm] nouveau 0000:01:00.0: 2: core 400MHz shader 800MHz memory 1080MHz voltage 560mV
[    4.651185] [drm] nouveau 0000:01:00.0: 3: core 1000MHz shader 2000MHz memory 1080MHz voltage 570mV
[    4.651186] [drm] nouveau 0000:01:00.0: c:
[    4.663870] [drm] nouveau 0000:01:00.0: allocated 1024x768 fb: 0xe0000, bo ffff880232021400
[    4.663896] fb1: nouveaufb frame buffer device
[    4.663899] [drm] Initialized nouveau 1.0.0 20120316 for 0000:01:00.0 on minor 1
#dmesg | grep i915
[    2.382374] i915 0000:00:02.0: setting latency timer to 64
[    2.416638] i915 0000:00:02.0: irq 45 for MSI/MSI-X
[    3.460052] [drm] Initialized i915 1.6.0 20080730 for 0000:00:02.0 on minor 0

P.S. Так как я планировал использовать nvidia драйвера, то я собрал ядро в соответствии с инструкциями, т.е. отключил

Device Drivers --->
Graphics Support --->
< >   nVidia Framebuffer Support
< >   nVidia Riva support

Правда, у меня не включен VESA VGA graphics support. Я попробую, как вернусь домой, ключить эту опцию.

P.P.S Если блеклистить nouveau и сразу загружать nvidia, то vgaswitcheroo также не загружается.

summon
()

Emacs настройка

Форум — General

Есть ли у кого статейка на примете по данному редактору, где была бы помощь на уровне начиная от ниже среднго и выше. Большенство того, что я нахожу это либо самые основы, про то, как листать экран и что такое бафферы, окна и моды. Или просто ответы на конкретные вопросы, которые, конечно, помогают понять как устроена настройка редактора, но не помогают его самостоятельно настроить. В хелп залазить не хочу, он слишком большой и по этому не самый удобный, когда не знаешь что именно ищешь. В идеале хотелось бы что-то вроде мануала по составлению относительно большого конфига с краткими или полными пояснениями к важным переменным и функциям.

Заранее спасибо.

summon
()

Откат Debian Sid до Testing

Форум — Desktop

Здравствуйте. На стационарной машине уже достаточно давно стоит Debian sid. Но так вышло, что стационарной машиной я не пользовался очень долго(около 3х или даже больше месяцев). Вот около двух недель назад дошли руки до стационарного компьютера. Я решил обновить, и, естесственно, обновлений было много. Для начала во время обновления один из системных скриптов проявил свой баг и впал в бесконечный цикл. В интернете нашел решение. Потом во время обновления рухнул свет и после начались проблемы с зависимостями.В итоге, прочитав, что aptitude умнее apt-get, я возложил на него проблему разрешения зависимостей. Он предложил какой-то вариант, который меня, вроде как, устроил. После обновления отказались запускаться иксы, что, порой, бывает. И я, немного огорченный, решил отложить реанимацию на потом. Вот сегодня, через две недели, решил посветить еще один день. Но обнаружил что происходят какие-то ужасные вещи. =)

root'у по автомату прописывалась пользовательская переменная $PATH. Это меня дивило, ведь в /etc/profile по дефолту указано [«'id -u'» -eq 0]; then... А значит bash не мог выполнить id. Но id лежит в /usr/bin/, который, насколько я понимаю, еще с самого начала запуска системы дожен быть доступен. Пришлось прописать до id прямой путь. При попытке установки через m-a драйверов для nvidia, он напрочь не видит хедеров ядра и отказыватся что-либо делать. Попытка запуска иксов на «встроенных» драйверах тоже приводит к краху. Модуль nv(xserver-xorg-video-nv) я не могу найти в репозиториях(o_0) и в системе у меня его нет. Но в var/log/Xorg.0.log прописано, что система пытается его найти. Установка руками последних xserver-xorg-video-nvidia, тоже не помогает. В логе пишется, что драйвера найдены, карточка найдена, но потом пишет, что возникла ошибка.

Вообщем, не могу сказать, что сид раньше меня часто напрягал. Просто если напрягал, то напрягал серьезно. На нетбуке у меня стоит testing уже больше полугода и проблем у меня вообще не возникало. Так что хочу стационарную машину перевести на debian testing. Так вот. =)

1) Есть ли у кого-нибудь опыт отката из сида до тестинга? Насколько проблематична эта операция? Что будет с теми пакетами, которых нет в тестинге, а есть в сиде и наоборот(например новая версия ядра или устаревшая библиотека)? Может кто находил в интернете что-то хорошо написанное на эту тему?

2) Может кто-нибудь может мне подсказать, что же все-таки случилось с системой, что она себя так ведет?

3) Сносить систему не предлогать. =)

Извините за длинный пост, заранее спасибо!

summon
()

Wheezy хочет удалить autoremove'ом пол системы.

Форум — Desktop

На нетбуке установлен Debian Wheezy(testing). Графикой заведует Gnome. Сегодня заметил, что apt сообщает мне о том, что 337 пакетов общим размеров 874 мегабайта были автоматический установлены и теперь, как оказалось, мне вовсе не нужны.. Где-то 4 дня назад такого небыло.. Среди них гномовские и гтк-шные пакеты, включая gdm3. Питоновские пакеты, а так же части моно, mysql,network-manager, apache и еще куча всего...

Единственные мысли, которые возникли, это попробывать обновиться(я достаточно регулярно обновляюсь). После небольшого обновления ничего не поменялось. Подумал, что может wheezy кардинально поменял гном, однако, никакой новой версии гнома у себя на машине я не обнаружил. Выключить и включить - не помогло. =)

Я мог бы сохранить список,авторемувнуть и посмотреть, что случится, однако, сейчас у меня нетбук выступает в роли основной рабочей машины.. Как бы странно это не звучало..

Может кто-нибудь сможет посоветовать что-нибудь полезное..

summon
()

RSS подписка на новые темы