Just another 'ATI KMS' thread - crash by console or X shutdown

Hi!
I'm one of those who is trying to get my Radeon HD 3200 working with early KMS and Arch x64 on my HP touchsmart tx2.
While the last versions worked either not at all or a little bit so X could start the current one seems to be a bit more stable. But nevertheless I experience a very strange behaviour: When trying to switch to a console (CTRL + ALT + F[1..6]) the screen just gets blank and the whole systems seems to crash. When trying to shutdown and X is closed the same happens and the shutdown doesn't occur. Unfortunately accelleration doesn't work as well. Might there be a mistake I made? I don't understand the line of the Xorg log marked with '(*)' by me at all. What's that about?
Package versiosn I am using that might be interesting:
kernel26 2.6.32.2-2
xf86-video-ati 6.12.4-3
xorg-server 1.7.3.902-1
dri2proto 2.1-1
lib32-mesa 7.7-1
mesa 7.7-1
lib32-libdrm 2.4.17-2
libdrm 2.4.17-2
libgl 7.7-1
xf86driproto 2.1.0-1
Currently I neither use the radeon module nor hook nor the firmware hook for the initial ramdisk.
glxgears (from which I know it isn't a benchmark at all) runs with about 415 fps.
Output of compiz-check:
Gathering information about your system...
Distribution: Arch Linux
Desktop environment: GNOME
Graphics chip: ATI Technologies Inc RS780M/RS780MN [Radeon HD 3200 Graphics]
Driver in use: radeon
Rendering method: AIGLX
Checking if it's possible to run Compiz on your system...
Checking for texture_from_pixmap... [ OK ]
Checking for non power of two support... [ OK ]
Checking for composite extension... [ OK ]
Checking for FBConfig... [ OK ]
Checking for hardware/setup problems... [FAIL]
There has been (at least) one error detected with your setup:
Error: Software Rasterizer in use
'Radeon' part of the X log:
(II) RADEON(0): vgaHWGetIOBase: hwp->IOBase is 0x03d0, hwp->PIOOffset is 0x0000
(==) RADEON(0): RGB weight 888
(II) RADEON(0): Using 8 bits per RGB (8 bit DAC)
(--) RADEON(0): Chipset: "ATI Radeon HD 3200 Graphics" (ChipID = 0x9612)
(--) RADEON(0): Linear framebuffer at 0x00000000c0000000
(II) RADEON(0): PCI card detected
(II) Loading sub module "int10"
(II) LoadModule: "int10"
(II) Loading /usr/lib/xorg/modules/libint10.so
(II) Module int10: vendor="X.Org Foundation"
compiled for 1.7.3.902, module version = 1.0.0
ABI class: X.Org Video Driver, version 6.0
(II) RADEON(0): initializing int10
(II) RADEON(0): Primary V_BIOS segment is: 0xc000
(II) RADEON(0): ATOM BIOS detected
(II) RADEON(0): ATOM BIOS Rom:
SubsystemVendorID: 0x103c SubsystemID: 0x3045
IOBaseAddress: 0x5000
Filename: BR31147.bin
BIOS Bootup Message:
HP_Soyuz30 RS780M DDR2 200e/500m
(II) RADEON(0): Framebuffer space used by Firmware (kb): 20
(II) RADEON(0): Start of VRAM area used by Firmware: 0x13ffb000
(II) RADEON(0): AtomBIOS requests 20kB of VRAM scratch space
(II) RADEON(0): AtomBIOS VRAM scratch base: 0x13ffb000
(II) RADEON(0): Cannot get VRAM scratch space. Allocating in main memory instead
(II) RADEON(0): Default Engine Clock: 500000
(II) RADEON(0): Default Memory Clock: 400000
(II) RADEON(0): Maximum Pixel ClockPLL Frequency Output: 1200000
(II) RADEON(0): Minimum Pixel ClockPLL Frequency Output: 0
(II) RADEON(0): Maximum Pixel ClockPLL Frequency Input: 13500
(II) RADEON(0): Minimum Pixel ClockPLL Frequency Input: 1000
(II) RADEON(0): Maximum Pixel Clock: 400000
(II) RADEON(0): Reference Clock: 14320
drmOpenDevice: node name is /dev/dri/card0
drmOpenByBusid: Searching for BusID pci:0000:01:05.0
drmOpenDevice: node name is /dev/dri/card0
drmOpenDevice: open result is 10, (OK)
drmOpenByBusid: drmOpenMinor returns 10
drmOpenByBusid: drmGetBusid reports pci:0000:01:05.0
(EE) RADEON(0): [dri] RADEONDRIGetVersion failed because of a version mismatch.
[dri] radeon kernel module version is 2.0.0 but version 1.17.0 or newer is needed.(*)
[dri] Disabling DRI.
(II) RADEON(0): using shadow framebuffer
(II) Loading sub module "shadow"
(II) LoadModule: "shadow"
(II) Loading /usr/lib/xorg/modules/libshadow.so
(II) Module shadow: vendor="X.Org Foundation"
compiled for 1.7.3.902, module version = 1.1.0
ABI class: X.Org ANSI C Emulation, version 0.4
(II) RADEON(0): Detected total video RAM=327680K, accessible=262144K (PCI BAR=262144K)
(--) RADEON(0): Mapped VideoRAM: 262144 kByte (128 bit DDR SDRAM)
(II) RADEON(0): Color tiling disabled
(II) RADEON(0): ref_freq: 1432, min_out_pll: 64800, max_out_pll: 120000, min_in_pll: 100, max_in_pll: 1350, xclk: 40000, sclk: 500.000000, mclk: 400.000000
(II) RADEON(0): PLL parameters: rf=1432 rd=12 min=64800 max=120000; xclk=40000
(II) Loading sub module "fb"
(II) LoadModule: "fb"
(II) Loading /usr/lib/xorg/modules/libfb.so
(II) Module fb: vendor="X.Org Foundation"
compiled for 1.7.3.902, module version = 1.0.0
ABI class: X.Org ANSI C Emulation, version 0.4
(II) RADEON(0): Memory manager initialized to (0,0) (2048,8191)
(II) RADEON(0): Reserved area from (0,2048) to (2048,2050)
(II) RADEON(0): Largest offscreen area available: 2048 x 6141
(II) RADEON(0): RADEONRestoreMemMapRegisters() :
(II) RADEON(0): MC_FB_LOCATION : 0x00cf00c0 0x00cf00c0
(II) RADEON(0): MC_AGP_LOCATION : 0x003f0000
(==) RADEON(0): Backing store disabled
(WW) RADEON(0): Direct rendering disabled
(EE) RADEON(0): Acceleration initialization failed
(II) RADEON(0): Acceleration disabled
(==) RADEON(0): DPMS enabled
(==) RADEON(0): Silken mouse enabled
(II) RADEON(0): Will use 32 kb for hardware cursor 0 at offset 0x01004000
(II) RADEON(0): Will use 32 kb for hardware cursor 1 at offset 0x01008000
(II) RADEON(0): Largest offscreen area available: 2048 x 6137
(II) RADEON(0): Textured video requires CP on R5xx/R6xx/R7xx/IGP
Do you have any idea what the problem(s) might be?
Thank you in advance!

KMS is still enabled in the kernel, it's just libdrm that needs to be recompiled. And then mesa and xf86-video-ati need to be recompiled against that. In other words it's a huge pain. The package versions I'm using now that get decent radeon kms framerates are:
kernel26-2.6.31.6
libdrm-2.4.16
xf86-video-ati-git-20091008
mesa-7.6
xorg-server-1.6.3.901
And I refuse to upgrade until I can upgrade and still have KMS. Thanks to a combination of "Arch doesn't want to support KMS" and "Dave Airlie despite his best intentions makes the driver more prone to crash on my system with every git push" my IgnorePkg list is now a page long.

Similar Messages

  • Not just another file sharing thread......

    Running a forum search gives me a plethora of file sharing threads. Most of these threads are a one answer type of question or a simple "Preferences>Sharing>File Sharing type of answer. I am no expert here, I learn something every time I visit, but I know the basics of file sharing after nearly 20 years of using macs. I have a network set up at my business and home that the computers share and am perfectly comfortable with the basics. I would really like a discussion about more creative options available to expand what I am currently using.
    We have four macbook pros here. Two are personal only and the other two are business/personal. The two business MBP's are the ones we use the most, they are the primary machines which go from work to home. Right now they share files but up until now have really been set up for their own workstations for 2 different jobs. Now, we are starting to blend a little bit more of our work and we have had the need to share more files with the 2 computers. It's gotten to a point where basic file sharing isn't enough. The problem I am having is that both computers aren't always within airport range of each other, and both computers aren't always on or awake. So, it's become annoying to have to make sure the machine with the files I need is awake and nearby. So, we have recently started using dropbox to share files that way. The only issue with that is that many of our files are sensitive in nature and security is a bit of a risk. So, I am encrypting volumes with PGP and sharing the encrypted volumes via dropbox. So far it's not been an issue with having the same files open at the same time on both computers to avoid conflicts, I think we'll be ok for awhile. But as this data collection grows, I think it will become impractical. The thing I really like about using dropbox is that both computers don't need to be running at the same time since the files are stored locally and the changes are synced online. Even if I am traveling with one computer, I will usually have an internet connection so the files will update on my partner's computer when I make changes. This is the ultimate in portability and syncing. But like I said, it may become impractical when we put 30-40 Gigs of data up and we can't so easily keep track of what's open on which computer.
    So, I would like to know what others do at work or home to share necessary files between multiple computers, other than typical OS X file sharing techniques. I know some applications have a checkout type of feature which might help for certain types of files, but I really want a simple universal setup that my partners and employees can learn without having to think about what type of file they are working with. I have quite a bit of server space I can use for storage of files online if it would help, but syncing would be an issue.
    Dropbox may just be the best option for me to share and sync from multiple locations. It makes sense! I just hope some users here have some other recommendations that might work!

    Allan Eckert wrote:
    As to the PGP questions, as long as you have a file from the DropBox attached and are doing updates they are being sent to the copy on the DropBox. The updates are not all held until you unmount it.
    Actually, I'm seeing otherwise. I just ran a test to be sure. I held a pgp disk open for about 5 minutes while copying files to and removing from it. I watched the dropbox folder and the upload activity the whole time and saw no activity or change. The moment I ejected the volume, network activity jumped up and the folder icon in my dropbox turned from synced to syncing in progress. It actually seems to work quite well. The problem I have with it is that if I need to use large files, it will take a long time to upload, because doesn't the whole encrypted volume need to be uploaded again for any minor changes? I haven't tested anything larger than about 20MB, so it's hard to tell.
    The drop copy application might actually be quite useful if I were running a file server. I would certainly need an easy to use interface for the actual sharing of the files. If I do go that route, I would prefer for the ability to be able to lock files. As Allan said, drop copy doesn't have that feature, unfortunately.
    So, there really isn't a well known solution for this type of application, huh? I may just have to reorganize my plan and stick to removable media for the shared data. If there is only one copy, it can't get mixed up. The only issue I have is when I'm not on premises, how do I share the data with the office? I suppose I will just have to have a better handle on what I need and make sure to have it with me and use dropbox or ftp to upload the files back and forth from office to user.
    I just did a test with a decent size PGP virtual disk (125MB) I added one small 3MB jpg file to it and it did an incremental update to sync the file very quickly. I don't know how it's able to do it, but it's doing it. I would have thought it would have to update the whole disk every time, but I guess not. Maybe PGP and dropbox is a better solution that I ever imagined it to be.
    Message was edited by: sterlingfive
    Message was edited by: sterlingfive

  • Another SLOW Lightroom Thread

    Just another thread to document the major issues I'm having with Lightroom 4.
    System: Dell Studio XPS running Windows 7 Home Premium, Intel i7-720QM, 8 GB RAM 1333MHz, 500 GB HD, ATI Radeon 4670 1GB with Wacom Intuos 5
    Working in the Develop module has been completely unacceptable and is costing me hours of editing time and frustrating, which means its costing me money.  Everything from navigating between photos to adjusting slider bars seems to be laggy to put it lightly.  After using the Adjustment Brush, making universal changes is taking forever!  And if I got back to create an additional adjustment with the Adjustment Brush tool, it's almost not even worth it because it is so slow to respond.  Similar to the slow downs after using the Adjustment Brush tool, any changes made after making any adjustments in the Lens Correction tab seem to be super sluggish as well.  Oh top of it all, my computer is running extremely hot when running Lightroom, which ever occured in past versions! 
    I've tried several suggestions that I've seen in forums, such as creating a fresh Catalog and importing the files directly into that new Catalog, hiding the Histogram to free up resources, reducing the size of the Catalog to just the working set I'm currently working on... I've now installed the 4.1 RC and do seem to see some increase in response with the sliders within the develop module, but once I start using the Adjustment Brush and Lens Correction, it seems to be back to it's sluggish self.  And after editing a few photos, the entire program is crawling.
    I think it's great that Adobe has such a strong following that people seem to be so understanding and patient about these issues, but find it unacceptable that such an unpolished release was issued to the public.  If the issues are eventually remedied I will be fully on board with Lightroom, once again, because I do think that the revamped develop module has been a major improvement for editing and workflow, but all those improvements are pretty useless when I'm losing so many hours battling with performance issues.

    No changes, nothing at all, in actual fact I don't even have a PC connected to this broadband line it's purely for the games consoles. I have a separate broadband line for my home office etc.
    Just had a call from BT India, with out wishing to sound derogatory I might as well talk to my pet cat. Apparently they were ringing to see if the problem had been resolved, I only reported it 2 hrs ago.

  • Yet another DVD Playback thread...

    Gone through every other thread related to DVD playback issues when you do a forum search for "dvd playback". If I try to play a DVD, the disc spins for quite a while while (S)MPlayer just sits there and eventually crashes. Tried this with multiple DVDs, updated all my software...here's the log. It doesn't play in xine or VLC either.
    /usr/bin/mplayer -noquiet -nofs -sub-fuzziness 1 -identify -slave -vo xv -ao oss -zoom -nokeepaspect -framedrop -input conf=/usr/share/smplayer/input.conf -stop-xscreensaver -wid 41943052 -monitorpixelaspect 1 -subfont-autoscale 1 -subfont-text-scale 5 -subcp ISO-8859-1 -subpos 100 -contrast 0 -brightness 0 -hue 0 -saturation 0 -dvd-device /dev/dvd -dvdangle 1 -nocache -osdlevel 1 -vf-add screenshot -channels 2 dvd://1
    MPlayer 1.0rc2-4.2.3 (C) 2000-2007 MPlayer Team
    CPU: Intel(R) Core(TM)2 Duo CPU T9500 @ 2.60GHz (Family: 6, Model: 23, Stepping: 6)
    CPUflags: MMX: 1 MMX2: 1 3DNow: 0 3DNow2: 0 SSE: 1 SSE2: 1
    Compiled with runtime CPU detection.
    115 audio & 237 video codecs
    mplayer: could not connect to socket
    mplayer: No such file or directory
    Failed to open LIRC support. You will not be able to use your remote control.
    Playing dvd://1.
    libdvdread: Invalid main menu IFO (VIDEO_TS.IFO).
    ID_DVD_TITLES=19
    ID_DVD_TITLE_1_CHAPTERS=5
    ID_DVD_TITLE_1_ANGLES=1
    ID_DVD_TITLE_2_CHAPTERS=5
    ID_DVD_TITLE_2_ANGLES=1
    ID_DVD_TITLE_3_CHAPTERS=5
    ID_DVD_TITLE_3_ANGLES=1
    ID_DVD_TITLE_4_CHAPTERS=5
    ID_DVD_TITLE_4_ANGLES=1
    ID_DVD_TITLE_5_CHAPTERS=5
    ID_DVD_TITLE_5_ANGLES=1
    ID_DVD_TITLE_6_CHAPTERS=2
    ID_DVD_TITLE_6_ANGLES=1
    ID_DVD_TITLE_7_CHAPTERS=2
    ID_DVD_TITLE_7_ANGLES=1
    ID_DVD_TITLE_8_CHAPTERS=4
    ID_DVD_TITLE_8_ANGLES=1
    ID_DVD_TITLE_9_CHAPTERS=2
    ID_DVD_TITLE_9_ANGLES=1
    ID_DVD_TITLE_10_CHAPTERS=2
    ID_DVD_TITLE_10_ANGLES=1
    ID_DVD_TITLE_11_CHAPTERS=2
    ID_DVD_TITLE_11_ANGLES=1
    ID_DVD_TITLE_12_CHAPTERS=2
    ID_DVD_TITLE_12_ANGLES=1
    ID_DVD_TITLE_13_CHAPTERS=5
    ID_DVD_TITLE_13_ANGLES=1
    ID_DVD_TITLE_14_CHAPTERS=2
    ID_DVD_TITLE_14_ANGLES=1
    ID_DVD_TITLE_15_CHAPTERS=2
    ID_DVD_TITLE_15_ANGLES=1
    ID_DVD_TITLE_16_CHAPTERS=2
    ID_DVD_TITLE_16_ANGLES=1
    ID_DVD_TITLE_17_CHAPTERS=2
    ID_DVD_TITLE_17_ANGLES=1
    ID_DVD_TITLE_18_CHAPTERS=2
    ID_DVD_TITLE_18_ANGLES=1
    ID_DVD_TITLE_19_CHAPTERS=2
    ID_DVD_TITLE_19_ANGLES=1
    *** Zero check failed in ifo_read.c:1361
    for vts_tmapt->zero_1 = 0x1b01
    libdvdread: Invalid title IFO (VTS_01_0.IFO).
    ID_DVD_TITLE_19_LENGTH=6.333
    ID_DVD_TITLE_1_LENGTH=1402.600
    ID_DVD_TITLE_2_LENGTH=1412.600
    ID_DVD_TITLE_3_LENGTH=1412.600
    ID_DVD_TITLE_4_LENGTH=1411.934
    ID_DVD_TITLE_5_LENGTH=1406.600
    ID_DVD_TITLE_6_LENGTH=1271.066
    ID_DVD_TITLE_7_LENGTH=483.033
    ID_DVD_TITLE_8_LENGTH=740.000
    ID_DVD_TITLE_9_LENGTH=279.533
    ID_DVD_TITLE_10_LENGTH=260.033
    ID_DVD_TITLE_11_LENGTH=203.100
    ID_DVD_TITLE_12_LENGTH=591.300
    ID_DVD_TITLE_13_LENGTH=573.033
    ID_DVD_TITLE_14_LENGTH=218.166
    ID_DVD_TITLE_15_LENGTH=185.333
    ID_DVD_TITLE_16_LENGTH=51.533
    ID_DVD_TITLE_17_LENGTH=122.000
    ID_DVD_TITLE_18_LENGTH=225.900
    There are 19 titles on this DVD.
    ID_DVD_CURRENT_TITLE=1
    There are 5 chapters in this DVD title.
    There are 1 angles in this DVD title.
    audio stream: 0 format: ac3 (stereo) language: en aid: 128.
    ID_AUDIO_ID=128
    ID_AID_128_LANG=en
    audio stream: 1 format: ac3 (stereo) language: fr aid: 129.
    ID_AUDIO_ID=129
    ID_AID_129_LANG=fr
    audio stream: 2 format: ac3 (stereo) language: es aid: 130.
    ID_AUDIO_ID=130
    ID_AID_130_LANG=es
    audio stream: 3 format: ac3 (stereo) language: en aid: 131.
    ID_AUDIO_ID=131
    ID_AID_131_LANG=en
    number of audio channels on disk: 4.
    subtitle ( sid ): 0 language: en
    ID_SUBTITLE_ID=0
    ID_SID_0_LANG=en
    subtitle ( sid ): 1 language: fr
    ID_SUBTITLE_ID=1
    ID_SID_1_LANG=fr
    subtitle ( sid ): 2 language: es
    ID_SUBTITLE_ID=2
    ID_SID_2_LANG=es
    subtitle ( sid ): 3 language: pt
    ID_SUBTITLE_ID=3
    ID_SID_3_LANG=pt
    subtitle ( sid ): 4 language: en
    ID_SUBTITLE_ID=4
    ID_SID_4_LANG=en
    subtitle ( sid ): 5 language: es
    ID_SUBTITLE_ID=5
    ID_SID_5_LANG=es
    subtitle ( sid ): 6 language: pt
    ID_SUBTITLE_ID=6
    ID_SID_6_LANG=pt
    subtitle ( sid ): 7 language: es
    ID_SUBTITLE_ID=7
    ID_SID_7_LANG=es
    subtitle ( sid ): 8 language: pt
    ID_SUBTITLE_ID=8
    ID_SID_8_LANG=pt
    number of subtitles on disk: 9
    CHAPTERS: 00:00:00,00:00:45,00:11:29,00:22:35,00:23:21,
    ID_AUDIO_ID=128
    ID_VIDEO_ID=0
    MPEG-PS file format detected.
    ID_AUDIO_ID=131
    ID_AUDIO_ID=130
    ID_AUDIO_ID=129
    ID_SUBTITLE_ID=3
    ID_SUBTITLE_ID=2
    ID_SUBTITLE_ID=0
    ID_SUBTITLE_ID=6
    ID_SUBTITLE_ID=5
    ID_SUBTITLE_ID=4
    ID_SUBTITLE_ID=1
    edit: tried installing ogle to see what i could do with that, this libdvdcss output might come in handy. this doesn't make a whole lot of sense because i have libdvdcss and all installed.
    [sa@mootop ~]$ ogle
    ERROR[ogle_nav]: ifoRead_VTS_ATRT faild
    libdvdread: Error cracking CSS key for /VIDEO_TS/VIDEO_TS.VOB (0x000003a0)
    libdvdread: Error cracking CSS key for /VIDEO_TS/VTS_01_0.VOB (0x00005c80)
    libdvdread: Error cracking CSS key for /VIDEO_TS/VTS_01_1.VOB (0x00018120)!!
    libdvdread: Error cracking CSS key for /VIDEO_TS/VTS_02_0.VOB (0x00018360)
    libdvdread: Error cracking CSS key for /VIDEO_TS/VTS_02_1.VOB (0x00018380)!!
    libdvdread: Error cracking CSS key for /VIDEO_TS/VTS_03_0.VOB (0x002379c0)
    libdvdread: Error cracking CSS key for /VIDEO_TS/VTS_03_1.VOB (0x002379e0)!!
    libdvdread: Error cracking CSS key for /VIDEO_TS/VTS_04_0.VOB (0x0029c000)
    libdvdread: Error cracking CSS key for /VIDEO_TS/VTS_04_1.VOB (0x0029c020)!!
    libdvdread: Error cracking CSS key for /VIDEO_TS/VTS_05_0.VOB (0x002c21e0)
    libdvdread: Error cracking CSS key for /VIDEO_TS/VTS_05_1.VOB (0x002c2200)!!
    libdvdread: Error cracking CSS key for /VIDEO_TS/VTS_06_0.VOB (0x002fe7e0)
    libdvdread: Error cracking CSS key for /VIDEO_TS/VTS_06_1.VOB (0x002fe800)!!
    libdvdread: Error cracking CSS key for /VIDEO_TS/VTS_07_0.VOB (0x0032ce60)
    libdvdread: Error cracking CSS key for /VIDEO_TS/VTS_07_1.VOB (0x0032ce80)!!
    libdvdread: Error cracking CSS key for /VIDEO_TS/VTS_08_0.VOB (0x0035d560)
    libdvdread: Error cracking CSS key for /VIDEO_TS/VTS_08_1.VOB (0x0035d580)!!
    FATAL[ogle_mpeg_ps]: dvdreadblocks failed
    Last edited by sa (2008-05-30 01:19:27)

    Sort of looks like hardware issues to me.  Do you know that the drive works (i.e. tested in another OS, or it used to work and just stopped?)
    Did you try just mplayer dvd://  ?  That's quite a long options list you've got there.
    What kind of drive is it?

  • ATI, KMS wiki page misunderstanding

    Hello,
    Could anyone please explain ATI KMS wiki page:
    1) What kind of KMS start is more preferrably, early or late? And wich should I try to use first?
    2) There is strange reference to package  radeon-initrd in AUR, wich does not exists. So... is this extra microcode really required? In both early and late start methods? And if  yes then how can I install it?
    Best regards,
    Ajunta.
    Last edited by Ajunta (2010-08-29 07:09:56)

    tomk wrote:radeon-initrd is no longer required.
    I can't make early kms work.
    I have a post somewhere where nobody answered:
    Hi ppl.
    Sorry for hijacking the current flow of ideas, but i reinstalled the system recently and now i can't get KMS early start.
    On the wiki page about mkinitcpio it says to add the hook firmware, but on creating the initrd it fails because it says it doesn't exist.
    On the wiki page about ati it says to use the package radeon-initrd. Well this package no longer exists, i know it worked because i used it in the previous install.
    So, i have an ati that should need to load the firmware for early start for what i understand, how should i do it? I don't think that just adding the radeon module to the modules array in the mkinitcpio.conf is enough but didn't try.
    Thanks for the help ^^
    Any help apreciated.
    Late start works fine and automatically when udev starts to load so no problem there.

  • 2.6.32 ATI KMS fu*#up

    Hi folks,
    after updating to kernel 2.6.32 and the latest Xorg I noticed a dramatic slowdown of my desktop (XFCE). Switching between desktops and resizing windows became reeeaaal slow.
    after puzzling around I returned to a working setup:
    my graphics card (lspci):
    01:00.0 VGA compatible controller: ATI Technologies Inc RV370 5B60 [Radeon X300 (PCIE)] (prog-if 00 [VGA controller])
    01:00.1 Display controller: ATI Technologies Inc RV370 [Radeon X300SE]
    packages in use:
    libdrm 2.4.17-2 (recompiled with --enable-radeon-experimental-api)
    kernel-headers 2.6.32-1
    kernel26 2.6.32.3-1
    kernel26-firmware 2.6.32.3-1
    kernel26-headers 2.6.32.3-1
    mesa 7.7-1 (recompiled)
    ati-dri 7.7-1
    libgl 7.7-1
    xf86-video-ati 6.12.4-3 (recompiled)
    xorg-server 1.7.3.902-1
    xorg.conf:
    Section "Module"
    Load "glx"
    Load "dri"
    Load "drm"
    EndSection
    Section "Device"
    Identifier "device"
    Driver "radeon"
    Option "AGPMode" "4"
    Option "ColorTiling" "TRUE"
    Option "RenderAccel" "TRUE"
    Option "AccelMethod" "EXA"
    EndSection
    when I enable (early) KMS, the kernel fails loading radeon/R300_cp.bin but continues boot after about 30 seconds (timeout?) -> so I disabled KMS again.
    on /var/log/everything.log I see the same problem:
    Jan 16 13:04:05 arbeit kernel: pci 0000:01:00.0: PCI INT A -> Link[APC3] -> GSI 18 (level, low) -> IRQ 18
    Jan 16 13:04:05 arbeit kernel: [drm] Initialized drm 1.1.0 20060810
    Jan 16 13:04:05 arbeit kernel: [drm] radeon defaulting to userspace modesetting.
    Jan 16 13:04:05 arbeit kernel: pci 0000:01:00.0: setting latency timer to 64
    Jan 16 13:04:05 arbeit kernel: [drm] Initialized radeon 1.31.0 20080528 for 0000:01:00.0 on minor 0
    Jan 16 13:04:06 arbeit kernel: [drm] Setting GART location based on new memory map
    Jan 16 13:04:06 arbeit kernel: [drm] Loading R300 Microcode
    Jan 16 13:04:06 arbeit kernel: platform radeon_cp.0: firmware: requesting radeon/R300_cp.bin
    Jan 16 13:04:06 arbeit load-modules.sh: 'platform:radeon_cp' is not a valid module or alias name
    Jan 16 13:04:06 arbeit kernel: [drm] Num pipes: 1
    Jan 16 13:04:06 arbeit kernel: [drm] writeback test succeeded in 1 usecs
    any ideas?!
    Regards
    \Daniel

    There's a  known issue with ati KMS and 2.6.32, a number of treads spawned about this problem
    read through this thread.

  • I just got my replacement phone from Warranty. The phone was on for just 2 hours and it crashed. I was told that motorola knows about this "possible" issue. I got a new sim, hard reset, If it can be done I did it. They are now sending me the same phone ag

    I just got my replacement phone from Warranty. The phone was on for just 2 hours and it crashed. I was told that motorola knows about this "possible" issue. I got a new sim, hard reset, If it can be done I did it. They are now sending me the same phone again. Number 3. I would hope this one doesn't crash but I rather have a different phone so I can enjoy using my account. The phone's most recent error was today. " Unfortunately, the process com.motorola.widget.circlewidget3d" has stopped. At least the error message works and it's polite. I told tech this and they could not answer my question or help me other then "let's do a hard reset" My warranty replacement is coming on Monday. Let's hope this one works. Anyone else havinbg the same problem. it says "such and such as stop working" on all sorts of stuff! Help! I want my iPhone Back!

    I just did a google search on this issue. OMG, I got a ton of videos on this or similar issues. Each one says in some way to clear the cache, reset the data, etc. Why in the world would this continue to happen and they not do a fix that resloves this without having to lose or stop what your doing. This is a very long and constant issue it seems with Android phones as there must have been pages and pages of what I now call "Unfortunately"  So I am going to pray that Verizon helps me  out and gets me away from this issue and helps me go back to iPhone or try the Samsung.

  • Just another rtorrent ui mod

    hi, I have been working on just another rtorrent ui mod, it's mainly inspired from rtorrent-mod by karabaja4 - thanks to him :-)
    I am sorry, I haven't made any package yet (need to study for it as never done before). I am attaching a patch for now, apply it from src directory like below.
    highlights:
    1 - colored more elements (tracker lists, chunks, files list, transferring chunks list etc)
    2 - a bit different ui
    3 - almost everything done lowercase (I like it like that, sorry if you don't like it)
    pwd should be rtorrent/src/rtorrent-0.9.3/src
    patch -p1 < ui-rtorrent-mod.patch
    Patch:
    diff -rupN src/display/canvas.cc src-custom/display/canvas.cc
    --- src/display/canvas.cc 2012-01-19 15:48:01.000000000 +0530
    +++ src-custom/display/canvas.cc 2013-06-06 01:54:59.338119016 +0530
    @@ -5,12 +5,12 @@
    // it under the terms of the GNU General Public License as published by
    // the Free Software Foundation; either version 2 of the License, or
    // (at your option) any later version.
    +//
    // This program is distributed in the hope that it will be useful,
    // but WITHOUT ANY WARRANTY; without even the implied warranty of
    // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
    // GNU General Public License for more details.
    +//
    // You should have received a copy of the GNU General Public License
    // along with this program; if not, write to the Free Software
    // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
    @@ -95,10 +95,21 @@ void
    Canvas::initialize() {
    if (m_isInitialized)
    return;
    +
    m_isInitialized = true;
    initscr();
    +
    + /* colors */
    + start_color();
    + use_default_colors();
    + init_pair(1, COLOR_RED, -1);
    + init_pair(2, COLOR_YELLOW, -1);
    + init_pair(3, COLOR_GREEN, -1);
    + init_pair(4, COLOR_BLUE, -1);
    + init_pair(5, COLOR_MAGENTA, -1);
    + init_pair(6, COLOR_CYAN, -1);
    +
    raw();
    noecho();
    nodelay(stdscr, TRUE);
    @@ -110,7 +121,7 @@ void
    Canvas::cleanup() {
    if (!m_isInitialized)
    return;
    +
    m_isInitialized = false;
    noraw();
    diff -rupN src/display/utils.cc src-custom/display/utils.cc
    --- src/display/utils.cc 2012-02-14 09:02:01.000000000 +0530
    +++ src-custom/display/utils.cc 2013-06-06 01:54:59.338119016 +0530
    @@ -53,6 +53,8 @@
    #include <torrent/data/file_manager.h>
    #include <torrent/download/resource_manager.h>
    #include <torrent/peer/client_info.h>
    +#include <torrent/peer/connection_list.h>
    +#include <torrent/peer/peer_list.h>
    #include "core/download.h"
    #include "core/manager.h"
    @@ -98,9 +100,9 @@ print_hhmmss_local(char* first, char* la
    char*
    print_ddhhmm(char* first, char* last, time_t t) {
    if (t / (24 * 3600) < 100)
    - return print_buffer(first, last, "%2id %2i:%02i", (int)t / (24 * 3600), ((int)t / 3600) % 24, ((int)t / 60) % 60);
    + return print_buffer(first, last, "%2id %2i:%02i |", (int)t / (24 * 3600), ((int)t / 3600) % 24, ((int)t / 60) % 60);
    else
    - return print_buffer(first, last, "--d --:--");
    + return print_buffer(first, last, "--d --:-- |");
    char*
    @@ -129,26 +131,53 @@ print_address(char* first, char* last, c
    char*
    print_download_title(char* first, char* last, core::Download* d) {
    - return print_buffer(first, last, " %s", d->info()->name().c_str());
    + first = print_buffer(first, last, "%s ", d->info()->name().c_str());
    +
    + return first;
    +}
    +
    +char *
    +print_download_title_extra(char* first, char* last, core::Download* d) {
    + if (d->is_hash_checking()) {
    + first = print_buffer(first, last, "| checking hash %3i%%",
    + (d->download()->chunks_hashed() * 100) / d->download()->file_list()->size_chunks());
    + } else if (d->tracker_list()->has_active_not_scrape()) {
    + torrent::TrackerList::iterator itr =
    + std::find_if(d->tracker_list()->begin(), d->tracker_list()->end(),
    + std::mem_fun(&torrent::Tracker::is_busy_not_scrape));
    + char status[128];
    +
    + (*itr)->get_status(status, sizeof(status));
    + first = print_buffer(first, last, "| connecting to %s %s",
    + (*itr)->url().c_str(), status);
    + } else if (!d->message().empty()) {
    + first = print_buffer(first, last, "| %s", d->message().c_str());
    + } else {
    + *first = '\0';
    + }
    +
    + return first;
    char*
    print_download_info(char* first, char* last, core::Download* d) {
    if (!d->download()->info()->is_open())
    - first = print_buffer(first, last, "[CLOSED] ");
    + first = print_buffer(first, last, "stop | ");
    else if (!d->download()->info()->is_active())
    - first = print_buffer(first, last, "[OPEN] ");
    + first = print_buffer(first, last, "open | ");
    + else if (!d->is_done())
    + first = print_buffer(first, last, "load | ");
    else
    - first = print_buffer(first, last, " ");
    + first = print_buffer(first, last, "---- | ");
    if (d->is_done())
    - first = print_buffer(first, last, "done %10.1f MB", (double)d->download()->file_list()->size_bytes() / (double)(1 << 20));
    + first = print_buffer(first, last, "done %8.1f mb", (double)d->download()->file_list()->size_bytes() / (double)(1 << 20));
    else
    - first = print_buffer(first, last, "%6.1f / %6.1f MB",
    + first = print_buffer(first, last, "%6.1f/%6.1f mb",
    (double)d->download()->bytes_done() / (double)(1 << 20),
    (double)d->download()->file_list()->size_bytes() / (double)(1 << 20));
    - first = print_buffer(first, last, " Rate: %5.1f / %5.1f KB Uploaded: %7.1f MB",
    + first = print_buffer(first, last, " | rate: %4.1f/%5.1f kb | uploaded: %5.1f mb |",
    (double)d->info()->up_rate()->rate() / (1 << 10),
    (double)d->info()->down_rate()->rate() / (1 << 10),
    (double)d->info()->up_rate()->total() / (1 << 20));
    @@ -157,24 +186,19 @@ print_download_info(char* first, char* l
    first = print_buffer(first, last, " ");
    first = print_download_percentage_done(first, last, d);
    - first = print_buffer(first, last, " ");
    + first = print_buffer(first, last, " | ");
    first = print_download_time_left(first, last, d);
    - } else {
    - first = print_buffer(first, last, " ");
    - first = print_buffer(first, last, " [%c%c R: %4.2f",
    - rpc::call_command_string("d.tied_to_file", rpc::make_target(d)).empty() ? ' ' : 'T',
    - rpc::call_command_value("d.ignore_commands", rpc::make_target(d)) == 0 ? ' ' : 'I',
    - (double)rpc::call_command_value("d.ratio", rpc::make_target(d)) / 1000.0);
    + first = print_buffer(first, last, " peers: %i(%i)",
    + (int)d->download()->connection_list()->size(),
    + (int)d->download()->peer_list()->available_list_size());
    if (d->priority() != 2)
    - first = print_buffer(first, last, " %s", rpc::call_command_string("d.priority_str", rpc::make_target(d)).c_str());
    + first = print_buffer(first, last, " | %s", rpc::call_command_string("d.priority_str", rpc::make_target(d)).c_str());
    + }
    if (!d->bencode()->get_key("rtorrent").get_key_string("throttle_name").empty())
    - first = print_buffer(first, last , " %s", rpc::call_command_string("d.throttle_name", rpc::make_target(d)).c_str());
    - first = print_buffer(first, last , "]");
    + first = print_buffer(first, last , " | %s", rpc::call_command_string("d.throttle_name", rpc::make_target(d)).c_str());
    if (first > last)
    throw torrent::internal_error("print_download_info(...) wrote past end of the buffer.");
    @@ -182,48 +206,48 @@ print_download_info(char* first, char* l
    return first;
    -char*
    -print_download_status(char* first, char* last, core::Download* d) {
    - if (d->is_active())
    - else if (rpc::call_command_value("d.hashing", rpc::make_target(d)) != 0)
    - first = print_buffer(first, last, "Hashing: ");
    - else if (!d->is_active())
    - first = print_buffer(first, last, "Inactive: ");
    - if (d->is_hash_checking()) {
    - first = print_buffer(first, last, "Checking hash [%2i%%]",
    - (d->download()->chunks_hashed() * 100) / d->download()->file_list()->size_chunks());
    - } else if (d->tracker_list()->has_active_not_scrape()) {
    - torrent::TrackerList::iterator itr =
    - std::find_if(d->tracker_list()->begin(), d->tracker_list()->end(),
    - std::mem_fun(&torrent::Tracker::is_busy_not_scrape));
    - char status[128];
    - (*itr)->get_status(status, sizeof(status));
    - first = print_buffer(first, last, "Tracker[%i:%i]: Connecting to %s %s",
    - (*itr)->group(), std::distance(d->tracker_list()->begin(), itr), (*itr)->url().c_str(), status);
    - } else if (!d->message().empty()) {
    - first = print_buffer(first, last, "%s", d->message().c_str());
    - } else {
    - *first = '\0';
    - if (first > last)
    - throw torrent::internal_error("print_download_status(...) wrote past end of the buffer.");
    - return first;
    +char*
    +print_download_status(char* first, char* last, core::Download* d) {
    + if (d->is_active())
    + ;
    + else if (rpc::call_command_value("d.hashing", rpc::make_target(d)) != 0)
    + first = print_buffer(first, last, "hashing: ");
    + else if (!d->is_active())
    + first = print_buffer(first, last, "inactive: ");
    +
    + if (d->is_hash_checking()) {
    + first = print_buffer(first, last, "checking hash [%2i%%]",
    + (d->download()->chunks_hashed() * 100) / d->download()->file_list()->size_chunks());
    +
    + } else if (d->tracker_list()->has_active_not_scrape()) {
    + torrent::TrackerList::iterator itr =
    + std::find_if(d->tracker_list()->begin(), d->tracker_list()->end(),
    + std::mem_fun(&torrent::Tracker::is_busy_not_scrape));
    + char status[128];
    +
    + (*itr)->get_status(status, sizeof(status));
    + first = print_buffer(first, last, "tracker[%i:%i]: connecting to %s %s",
    + (*itr)->group(), std::distance(d->tracker_list()->begin(), itr), (*itr)->url().c_str(), status);
    +
    + } else if (!d->message().empty()) {
    + first = print_buffer(first, last, "%s", d->message().c_str());
    +
    + } else {
    + *first = '\0';
    + }
    +
    + if (first > last)
    + throw torrent::internal_error("print_download_status(...) wrote past end of the buffer.");
    +
    + return first;
    +}
    char*
    print_download_time_left(char* first, char* last, core::Download* d) {
    uint32_t rate = d->info()->down_rate()->rate();
    if (rate < 512)
    - return print_buffer(first, last, "--d --:--");
    + return print_buffer(first, last, "--d --:-- |");
    time_t remaining = (d->download()->file_list()->size_bytes() - d->download()->bytes_done()) / (rate & ~(uint32_t)(512 - 1));
    @@ -233,10 +257,9 @@ print_download_time_left(char* first, ch
    char*
    print_download_percentage_done(char* first, char* last, core::Download* d) {
    if (!d->is_open() || d->is_done())
    - //return print_buffer(first, last, "[--%%]");
    - return print_buffer(first, last, " ");
    + return print_buffer(first, last, " ");
    else
    - return print_buffer(first, last, "[%2u%%]", (d->download()->file_list()->completed_chunks() * 100) / d->download()->file_list()->size_chunks());
    + return print_buffer(first, last, "%2u%%", (d->download()->file_list()->completed_chunks() * 100) / d->download()->file_list()->size_chunks());
    char*
    @@ -260,23 +283,23 @@ print_client_version(char* first, char*
    char*
    print_status_info(char* first, char* last) {
    if (!torrent::up_throttle_global()->is_throttled())
    - first = print_buffer(first, last, "[Throttle off");
    + first = print_buffer(first, last, "[throttle off");
    else
    - first = print_buffer(first, last, "[Throttle %3i", torrent::up_throttle_global()->max_rate() / 1024);
    + first = print_buffer(first, last, "[throttle %3i", torrent::up_throttle_global()->max_rate() / 1024);
    if (!torrent::down_throttle_global()->is_throttled())
    - first = print_buffer(first, last, "/off KB]");
    + first = print_buffer(first, last, "/off kb]");
    else
    - first = print_buffer(first, last, "/%3i KB]", torrent::down_throttle_global()->max_rate() / 1024);
    + first = print_buffer(first, last, "/%3i kb]", torrent::down_throttle_global()->max_rate() / 1024);
    - first = print_buffer(first, last, " [Rate %5.1f/%5.1f KB]",
    + first = print_buffer(first, last, " [rate %4.1f/%5.1f kb]",
    (double)torrent::up_rate()->rate() / 1024.0,
    (double)torrent::down_rate()->rate() / 1024.0);
    - first = print_buffer(first, last, " [Port: %i]", (unsigned int)torrent::connection_manager()->listen_port());
    + first = print_buffer(first, last, " [port: %i]", (unsigned int)torrent::connection_manager()->listen_port());
    if (!rak::socket_address::cast_from(torrent::connection_manager()->local_address())->is_address_any()) {
    - first = print_buffer(first, last, " [Local ");
    + first = print_buffer(first, last, " [local ");
    first = print_address(first, last, torrent::connection_manager()->local_address());
    first = print_buffer(first, last, "]");
    @@ -285,7 +308,7 @@ print_status_info(char* first, char* las
    throw torrent::internal_error("print_status_info(...) wrote past end of the buffer.");
    if (!rak::socket_address::cast_from(torrent::connection_manager()->bind_address())->is_address_any()) {
    - first = print_buffer(first, last, " [Bind ");
    + first = print_buffer(first, last, " [bind ");
    first = print_address(first, last, torrent::connection_manager()->bind_address());
    first = print_buffer(first, last, "]");
    @@ -295,24 +318,24 @@ print_status_info(char* first, char* las
    char*
    print_status_extra(char* first, char* last) {
    - first = print_buffer(first, last, " [U %i/%i]",
    + first = print_buffer(first, last, " [u %i/%i]",
    torrent::resource_manager()->currently_upload_unchoked(),
    torrent::resource_manager()->max_upload_unchoked());
    - first = print_buffer(first, last, " [D %i/%i]",
    + first = print_buffer(first, last, " [d %i/%i]",
    torrent::resource_manager()->currently_download_unchoked(),
    torrent::resource_manager()->max_download_unchoked());
    - first = print_buffer(first, last, " [H %u/%u]",
    + first = print_buffer(first, last, " [h %u/%u]",
    control->core()->http_stack()->active(),
    control->core()->http_stack()->max_active());
    - first = print_buffer(first, last, " [S %i/%i/%i]",
    + first = print_buffer(first, last, " [s %i/%i/%i]",
    torrent::total_handshakes(),
    torrent::connection_manager()->size(),
    torrent::connection_manager()->max_size());
    - first = print_buffer(first, last, " [F %i/%i]",
    + first = print_buffer(first, last, " [f %i/%i]",
    torrent::file_manager()->open_files(),
    torrent::file_manager()->max_open_files());
    diff -rupN src/display/utils.h src-custom/display/utils.h
    --- src/display/utils.h 2012-01-19 15:48:01.000000000 +0530
    +++ src-custom/display/utils.h 2013-06-06 01:54:59.331452368 +0530
    @@ -66,6 +66,7 @@ char* print_ddhhmm(char* first, ch
    char* print_ddmmyyyy(char* first, char* last, time_t t);
    char* print_download_title(char* first, char* last, core::Download* d);
    +char* print_download_title_extra(char* first, char* last, core::Download* d);
    char* print_download_info(char* first, char* last, core::Download* d);
    char* print_download_status(char* first, char* last, core::Download* d);
    char* print_download_time_left(char* first, char* last, core::Download* d);
    diff -rupN src/display/window_download_chunks_seen.cc src-custom/display/window_download_chunks_seen.cc
    --- src/display/window_download_chunks_seen.cc 2012-01-19 15:48:01.000000000 +0530
    +++ src-custom/display/window_download_chunks_seen.cc 2013-06-06 02:04:03.243342326 +0530
    @@ -66,7 +66,7 @@ WindowDownloadChunksSeen::redraw() {
    if (m_canvas->height() < 3 || m_canvas->width() < 18)
    return;
    - m_canvas->print(2, 0, "Chunks seen: [C/A/D %i/%i/%.2f]",
    + m_canvas->print(2, 0, "chunks seen: [c/a/d %i/%i/%.2f]",
    (int)m_download->download()->peers_complete() + m_download->download()->file_list()->is_done(),
    (int)m_download->download()->peers_accounted(),
    std::floor(m_download->distributed_copies() * 100.0f) / 100.0f);
    @@ -74,15 +74,16 @@ WindowDownloadChunksSeen::redraw() {
    const uint8_t* seen = m_download->download()->chunks_seen();
    if (seen == NULL || m_download->download()->file_list()->bitfield()->empty()) {
    - m_canvas->print(2, 2, "Not available.");
    + m_canvas->print(2, 2, "not available.");
    return;
    if (!m_download->is_done()) {
    - m_canvas->print(36, 0, "X downloaded missing queued downloading");
    - m_canvas->print_char(50, 0, 'X' | A_BOLD);
    - m_canvas->print_char(61, 0, 'X' | A_BOLD | A_UNDERLINE);
    - m_canvas->print_char(71, 0, 'X' | A_REVERSE);
    + m_canvas->print(36, 0, " downloaded missing queued downloading");
    + m_canvas->print_char(36, 0, 'x' | COLOR_PAIR(3));
    + m_canvas->print_char(50, 0, 'x' | COLOR_PAIR(1));
    + m_canvas->print_char(61, 0, 'x' | A_UNDERLINE);
    + m_canvas->print_char(71, 0, 'x' | COLOR_PAIR(6));
    *m_focus = std::min(*m_focus, max_focus());
    @@ -109,15 +110,15 @@ WindowDownloadChunksSeen::redraw() {
    chtype attr;
    if (bitfield->get(chunk - seen)) {
    - attr = A_NORMAL;
    + attr = COLOR_PAIR(3);
    } else if (itrTransfer != transferChunks.end() && (uint32_t)(chunk - seen) == (*itrTransfer)->index()) {
    if (std::find_if((*itrTransfer)->begin(), (*itrTransfer)->end(), std::mem_fun_ref(&torrent::Block::is_transfering)) != (*itrTransfer)->end())
    - attr = A_REVERSE;
    + attr = COLOR_PAIR(1);
    else
    - attr = A_BOLD | A_UNDERLINE;
    + attr = A_UNDERLINE;
    itrTransfer++;
    } else {
    - attr = A_BOLD;
    + attr = COLOR_PAIR(6);
    m_canvas->print_char(attr | rak::value_to_hexchar<0>(std::min<uint8_t>(*chunk, 0xF)));
    diff -rupN src/display/window_download_list.cc src-custom/display/window_download_list.cc
    --- src/display/window_download_list.cc 2012-02-14 09:02:01.000000000 +0530
    +++ src-custom/display/window_download_list.cc 2013-06-06 01:54:59.331452368 +0530
    @@ -71,7 +71,7 @@ WindowDownloadList::redraw() {
    if (m_view == NULL)
    return;
    - m_canvas->print(0, 0, "%s", ("[View: " + m_view->name() + "]").c_str());
    + m_canvas->print(0, 0, "%s", ("[view: " + m_view->name() + "]").c_str());
    if (m_view->empty_visible() || m_canvas->width() < 5 || m_canvas->height() < 2)
    return;
    @@ -81,7 +81,7 @@ WindowDownloadList::redraw() {
    Range range = rak::advance_bidirectional(m_view->begin_visible(),
    m_view->focus() != m_view->end_visible() ? m_view->focus() : m_view->begin_visible(),
    m_view->end_visible(),
    - m_canvas->height() / 3);
    + (m_canvas->height() - 1) / 3);
    // Make sure we properly fill out the last lines so it looks like
    // there are more torrents, yet don't hide it if we got the last one
    @@ -89,21 +89,54 @@ WindowDownloadList::redraw() {
    if (range.second != m_view->end_visible())
    ++range.second;
    - int pos = 1;
    + int pos = 2;
    while (range.first != range.second) {
    char buffer[m_canvas->width() + 1];
    char* last = buffer + m_canvas->width() - 2 + 1;
    + int title_length;
    + //do not print on last lines if cannot show whole torrent
    + if (pos >= (m_canvas->height() - 1))
    + break;
    +
    + // print title
    print_download_title(buffer, last, *range.first);
    - m_canvas->print(0, pos++, "%c %s", range.first == m_view->focus() ? '*' : ' ', buffer);
    - print_download_info(buffer, last, *range.first);
    - m_canvas->print(0, pos++, "%c %s", range.first == m_view->focus() ? '*' : ' ', buffer);
    + m_canvas->print(0, pos, "%c %s", range.first == m_view->focus() ? '>' : ' ', buffer);
    + title_length = strlen(buffer);
    + if ((*range.first)->is_done()) {
    + m_canvas->set_attr(2, pos, (title_length), A_BOLD, 3);
    + } else {
    + m_canvas->set_attr(2, pos, (title_length), A_BOLD, 2);
    + }
    + //print title extra
    + print_download_title_extra(buffer, last, *range.first);
    +
    + //do not let title extra get off screen
    + buffer[m_canvas->width() - title_length - 2] = '\0';
    + m_canvas->print((title_length + 2), pos++, "%s", buffer);
    - print_download_status(buffer, last, *range.first);
    - m_canvas->print(0, pos++, "%c %s", range.first == m_view->focus() ? '*' : ' ', buffer);
    + print_download_info(buffer, last, *range.first);
    + m_canvas->print(0, pos, " %s", buffer);
    + if (!(*range.first)->info()->is_open()) {
    + //closed
    + m_canvas->set_attr(2, pos, 4, A_BOLD, 1);
    + } else if (!(*range.first)->info()->is_active()) {
    + //paused
    + m_canvas->set_attr(2, pos, 4, A_BOLD, 2);
    + } else {
    + //active
    + m_canvas->set_attr(2, pos, 4, A_BOLD, 3);
    + }
    +
    + if ((*range.first)->is_done()) {
    + //finished
    + m_canvas->set_attr(9, pos, 16, A_BOLD, 3);
    + }
    + m_canvas->set_attr(28, pos, (strlen(buffer) - 26), A_NORMAL, 6);
    + pos++;
    + pos++;
    ++range.first;
    diff -rupN src/display/window_download_statusbar.cc src-custom/display/window_download_statusbar.cc
    --- src/display/window_download_statusbar.cc 2012-02-14 09:02:01.000000000 +0530
    +++ src-custom/display/window_download_statusbar.cc 2013-06-06 01:54:59.328119043 +0530
    @@ -68,7 +68,7 @@ WindowDownloadStatusbar::redraw() {
    print_download_info(buffer, last, m_download);
    m_canvas->print(0, 0, "%s", buffer);
    - snprintf(buffer, last - buffer, "Peers: %i(%i) Min/Max: %i/%i Slots: U:%i/%i D:%i/%i U/I/C/A: %i/%i/%i/%i Unchoked: %u/%u Failed: %i",
    + snprintf(buffer, last - buffer, "peers: %i(%i) min/max: %i/%i slots: u:%i/%i d:%i/%i u/i/c/a: %i/%i/%i/%i unchoked: %u/%u failed: %i",
    (int)m_download->download()->connection_list()->size(),
    (int)m_download->download()->peer_list()->available_list_size(),
    (int)m_download->download()->connection_list()->min_size(),
    diff -rupN src/display/window_download_transfer_list.cc src-custom/display/window_download_transfer_list.cc
    --- src/display/window_download_transfer_list.cc 2012-01-19 15:48:01.000000000 +0530
    +++ src-custom/display/window_download_transfer_list.cc 2013-06-06 01:54:59.331452368 +0530
    @@ -65,7 +65,7 @@ WindowDownloadTransferList::redraw() {
    const torrent::TransferList* transfers = m_download->download()->transfer_list();
    - m_canvas->print(2, 0, "Transfer list: [Size %i]", transfers->size());
    + m_canvas->print(2, 0, "transfer list: [size %i]", transfers->size());
    torrent::TransferList::const_iterator itr = transfers->begin();
    @@ -74,7 +74,7 @@ WindowDownloadTransferList::redraw() {
    // prettify this. (This is a very subtle hint)
    for (unsigned int y = 1; y < m_canvas->height() && itr != transfers->end(); ++y, ++itr) {
    - m_canvas->print(0, y, "%5u [P: %u F: %u]", (*itr)->index(), (*itr)->priority(), (*itr)->failed());
    + m_canvas->print(0, y, "%5u [p: %u f: %u]", (*itr)->index(), (*itr)->priority(), (*itr)->failed());
    // Handle window size.
    for (torrent::BlockList::const_iterator bItr = (*itr)->begin(), bLast = (*itr)->end(); bItr != bLast; ++bItr) {
    @@ -89,7 +89,7 @@ WindowDownloadTransferList::redraw() {
    chtype attr = A_NORMAL;
    if (bItr->is_finished()) {
    - attr = A_REVERSE;
    + attr = COLOR_PAIR(3);
    id = key_id(bItr->leader()->const_peer_info());
    } else if (bItr->is_transfering()) {
    diff -rupN src/display/window_file_list.cc src-custom/display/window_file_list.cc
    --- src/display/window_file_list.cc 2012-02-14 09:02:01.000000000 +0530
    +++ src-custom/display/window_file_list.cc 2013-06-06 01:54:59.338119016 +0530
    @@ -154,9 +154,9 @@ WindowFileList::redraw() {
    unsigned int pos = 0;
    - int filenameWidth = m_canvas->width() - 16;
    + int filenameWidth = m_canvas->width() - 18;
    - m_canvas->print(0, pos++, "Cmp Pri Size Filename");
    + m_canvas->print(0, pos++, "cmp pri size filename");
    while (pos != m_canvas->height()) {
    iterator itr = entries[first];
    @@ -164,17 +164,17 @@ WindowFileList::redraw() {
    if (itr == iterator(fl->end()))
    break;
    - m_canvas->set_default_attributes(itr == m_element->selected() ? is_focused() ? A_REVERSE : A_BOLD : A_NORMAL);
    + m_canvas->set_default_attributes(itr == m_element->selected() ? is_focused() ? COLOR_PAIR(3) : A_NORMAL : A_NORMAL);
    if (itr.is_empty()) {
    - m_canvas->print(0, pos, "%*c%-*s", 16, ' ', filenameWidth, "EMPTY");
    + m_canvas->print(0, pos, "%*c%-*s", 18, ' ', filenameWidth, "empty");
    } else if (itr.is_entering()) {
    - m_canvas->print(0, pos, "%*c %ls", 16 + itr.depth(), '\\',
    - itr.depth() < (*itr)->path()->size() ? wstring_width((*itr)->path()->at(itr.depth()), filenameWidth - itr.depth() - 1).c_str() : L"UNKNOWN");
    + m_canvas->print(0, pos, "%*c %ls", 18 + itr.depth(), '\\',
    + itr.depth() < (*itr)->path()->size() ? wstring_width((*itr)->path()->at(itr.depth()), filenameWidth - itr.depth() - 1).c_str() : L"unknown");
    } else if (itr.is_leaving()) {
    - m_canvas->print(0, pos, "%*c %-*s", 16 + (itr.depth() - 1), '/', filenameWidth - (itr.depth() - 1), "");
    + m_canvas->print(0, pos, "%*c %-*s", 18 + (itr.depth() - 1), '/', filenameWidth - (itr.depth() - 1), "");
    } else if (itr.is_file()) {
    torrent::File* e = *itr;
    @@ -185,7 +185,7 @@ WindowFileList::redraw() {
    case torrent::PRIORITY_OFF: priority = "off"; break;
    case torrent::PRIORITY_NORMAL: priority = " "; break;
    case torrent::PRIORITY_HIGH: priority = "hig"; break;
    - default: priority = "BUG"; break;
    + default: priority = "bug"; break;
    m_canvas->print(0, pos, "%3d %s ", done_percentage(e), priority);
    @@ -193,19 +193,19 @@ WindowFileList::redraw() {
    int64_t val = e->size_bytes();
    if (val < (int64_t(1000) << 10))
    - m_canvas->print(8, pos, "%5.1f K", (double)val / (int64_t(1) << 10));
    + m_canvas->print(8, pos, " %5.1f k ", (double)val / (int64_t(1) << 10));
    else if (val < (int64_t(1000) << 20))
    - m_canvas->print(8, pos, "%5.1f M", (double)val / (int64_t(1) << 20));
    + m_canvas->print(8, pos, " %5.1f m ", (double)val / (int64_t(1) << 20));
    else if (val < (int64_t(1000) << 30))
    - m_canvas->print(8, pos, "%5.1f G", (double)val / (int64_t(1) << 30));
    + m_canvas->print(8, pos, " %5.1f g ", (double)val / (int64_t(1) << 30));
    else
    - m_canvas->print(8, pos, "%5.1f T", (double)val / (int64_t(1) << 40));
    + m_canvas->print(8, pos, " %5.1f t ", (double)val / (int64_t(1) << 40));
    - m_canvas->print(15, pos, "%*c %ls", 1 + itr.depth(), '|',
    - itr.depth() < (*itr)->path()->size() ? wstring_width((*itr)->path()->at(itr.depth()), filenameWidth - itr.depth() - 1).c_str() : L"UNKNOWN");
    + m_canvas->print(17, pos, "%*c %ls", 1 + itr.depth(), '|',
    + itr.depth() < (*itr)->path()->size() ? wstring_width((*itr)->path()->at(itr.depth()), filenameWidth - itr.depth() - 1).c_str() : L"unknown");
    } else {
    - m_canvas->print(0, pos, "BORK BORK");
    + m_canvas->print(0, pos, "bork bork");
    m_canvas->set_default_attributes(A_NORMAL);
    diff -rupN src/display/window_http_queue.cc src-custom/display/window_http_queue.cc
    --- src/display/window_http_queue.cc 2012-01-19 15:48:01.000000000 +0530
    +++ src-custom/display/window_http_queue.cc 2013-06-06 01:54:59.328119043 +0530
    @@ -70,7 +70,7 @@ WindowHttpQueue::redraw() {
    m_canvas->erase();
    - m_canvas->print(0, 0, "Http [%i]", m_queue->size());
    + m_canvas->print(0, 0, "http [%i]", m_queue->size());
    unsigned int pos = 10;
    Container::iterator itr = m_container.begin();
    diff -rupN src/display/window_input.cc src-custom/display/window_input.cc
    --- src/display/window_input.cc 2012-01-19 15:48:01.000000000 +0530
    +++ src-custom/display/window_input.cc 2013-06-06 01:54:59.338119016 +0530
    @@ -49,7 +49,7 @@ WindowInput::redraw() {
    m_canvas->print(0, 0, "%s> %s", m_title.c_str(), m_input != NULL ? m_input->c_str() : "<NULL>");
    if (m_focus)
    - m_canvas->set_attr(m_input->get_pos() + 2 + m_title.size(), 0, 1, A_REVERSE, COLOR_PAIR(0));
    + m_canvas->set_attr(m_input->get_pos() + 2 + m_title.size(), 0, 1, A_BOLD, 3);
    diff -rupN src/display/window_peer_list.cc src-custom/display/window_peer_list.cc
    --- src/display/window_peer_list.cc 2012-01-19 15:48:01.000000000 +0530
    +++ src-custom/display/window_peer_list.cc 2013-06-06 01:54:59.334785692 +0530
    @@ -68,16 +68,16 @@ WindowPeerList::redraw() {
    int x = 2;
    int y = 0;
    - m_canvas->print(x, y, "IP"); x += 16;
    - m_canvas->print(x, y, "UP"); x += 7;
    - m_canvas->print(x, y, "DOWN"); x += 7;
    - m_canvas->print(x, y, "PEER"); x += 7;
    - m_canvas->print(x, y, "CT/RE/LO"); x += 10;
    - m_canvas->print(x, y, "QS"); x += 6;
    - m_canvas->print(x, y, "DONE"); x += 6;
    - m_canvas->print(x, y, "REQ"); x += 6;
    - m_canvas->print(x, y, "SNUB"); x += 6;
    - m_canvas->print(x, y, "FAILED");
    + m_canvas->print(x, y, "ip"); x += 16;
    + m_canvas->print(x, y, "up"); x += 7;
    + m_canvas->print(x, y, "down"); x += 7;
    + m_canvas->print(x, y, "peer"); x += 7;
    + m_canvas->print(x, y, "ct/re/lo"); x += 10;
    + m_canvas->print(x, y, "qs"); x += 6;
    + m_canvas->print(x, y, "done"); x += 6;
    + m_canvas->print(x, y, "req"); x += 6;
    + m_canvas->print(x, y, "snub"); x += 6;
    + m_canvas->print(x, y, "failed");
    ++y;
    diff -rupN src/display/window_title.cc src-custom/display/window_title.cc
    --- src/display/window_title.cc 2012-01-19 15:48:01.000000000 +0530
    +++ src-custom/display/window_title.cc 2013-06-06 01:54:59.338119016 +0530
    @@ -47,7 +47,9 @@ WindowTitle::redraw() {
    m_canvas->erase();
    m_canvas->print(std::max(0, ((int)m_canvas->width() - (int)m_title.size()) / 2 - 4), 0,
    - "*** %s ***", m_title.c_str());
    + "--- %s ---", m_title.c_str());
    + m_canvas->set_attr((((int)m_canvas->width() - (int)m_title.size()) / 2 - 4), 0, 3, A_BOLD, 1);
    + m_canvas->set_attr(((((int)m_canvas->width() - (int)m_title.size()) / 2) + (int)m_title.size() + 1), 0, 3, A_BOLD, 1);
    diff -rupN src/display/window_tracker_list.cc src-custom/display/window_tracker_list.cc
    --- src/display/window_tracker_list.cc 2012-04-10 18:16:51.000000000 +0530
    +++ src-custom/display/window_tracker_list.cc 2013-06-06 01:54:59.331452368 +0530
    @@ -65,7 +65,7 @@ WindowTrackerList::redraw() {
    torrent::TrackerList* tl = m_download->tracker_list();
    torrent::TrackerController* tc = m_download->tracker_controller();
    - m_canvas->print(2, pos, "Trackers: [Key: %08x] [%s %s %s]",
    + m_canvas->print(2, pos, "trackers: [key: %08x] [%s %s %s]",
    tl->key(),
    tc->is_requesting() ? "req" : " ",
    tc->is_promiscuous_mode() ? "prom" : " ",
    @@ -99,7 +99,7 @@ WindowTrackerList::redraw() {
    else
    state = " ";
    - m_canvas->print(0, pos++, "%s Id: %s Counters: %uf / %us (%u) %s S/L/D: %u/%u/%u (%u/%u)",
    + m_canvas->print(0, pos++, "%s id: %s counters: %uf / %us (%u) %s s/l/d: %u/%u/%u (%u/%u)",
    state,
    rak::copy_escape_html(tracker->tracker_id()).c_str(),
    tracker->failed_counter(),
    @@ -114,13 +114,13 @@ WindowTrackerList::redraw() {
    if (range.first == *m_focus) {
    - m_canvas->set_attr(4, pos - 2, m_canvas->width(), is_focused() ? A_REVERSE : A_BOLD, COLOR_PAIR(0));
    - m_canvas->set_attr(4, pos - 1, m_canvas->width(), is_focused() ? A_REVERSE : A_BOLD, COLOR_PAIR(0));
    + m_canvas->set_attr(4, pos - 2, m_canvas->width(), is_focused() ? A_BOLD : A_NORMAL, 3);
    + m_canvas->set_attr(4, pos - 1, m_canvas->width(), is_focused() ? A_BOLD : A_NORMAL, 3);
    if (tracker->is_busy()) {
    - m_canvas->set_attr(0, pos - 2, 4, A_REVERSE, COLOR_PAIR(0));
    - m_canvas->set_attr(0, pos - 1, 4, A_REVERSE, COLOR_PAIR(0));
    + m_canvas->set_attr(0, pos - 2, 4, A_BOLD, 2);
    + m_canvas->set_attr(0, pos - 1, 4, A_BOLD, 2);
    range.first++;
    diff -rupN src/ui/download.cc src-custom/ui/download.cc
    --- src/ui/download.cc 2012-01-19 15:48:01.000000000 +0530
    +++ src-custom/ui/download.cc 2013-06-06 01:54:59.404785502 +0530
    @@ -109,22 +109,22 @@ inline ElementBase*
    Download::create_menu() {
    ElementMenu* element = new ElementMenu;
    - element->push_back("Peer list",
    + element->push_back("peer list",
    sigc::bind(sigc::mem_fun(this, &Download::activate_display_focus), DISPLAY_PEER_LIST),
    sigc::bind(sigc::mem_fun(this, &Download::activate_display_menu), DISPLAY_PEER_LIST));
    - element->push_back("Info",
    + element->push_back("info",
    sigc::bind(sigc::mem_fun(this, &Download::activate_display_focus), DISPLAY_INFO),
    sigc::bind(sigc::mem_fun(this, &Download::activate_display_menu), DISPLAY_INFO));
    - element->push_back("File list",
    + element->push_back("file list",
    sigc::bind(sigc::mem_fun(this, &Download::activate_display_focus), DISPLAY_FILE_LIST),
    sigc::bind(sigc::mem_fun(this, &Download::activate_display_menu), DISPLAY_FILE_LIST));
    - element->push_back("Tracker list",
    + element->push_back("tracker list",
    sigc::bind(sigc::mem_fun(this, &Download::activate_display_focus), DISPLAY_TRACKER_LIST),
    sigc::bind(sigc::mem_fun(this, &Download::activate_display_menu), DISPLAY_TRACKER_LIST));
    - element->push_back("Chunks seen",
    + element->push_back("chunks seen",
    sigc::bind(sigc::mem_fun(this, &Download::activate_display_focus), DISPLAY_CHUNKS_SEEN),
    sigc::bind(sigc::mem_fun(this, &Download::activate_display_menu), DISPLAY_CHUNKS_SEEN));
    - element->push_back("Transfer list",
    + element->push_back("transfer list",
    sigc::bind(sigc::mem_fun(this, &Download::activate_display_focus), DISPLAY_TRANSFER_LIST),
    sigc::bind(sigc::mem_fun(this, &Download::activate_display_menu), DISPLAY_TRANSFER_LIST));
    @@ -149,41 +149,41 @@ Download::create_info() {
    // Get these bindings with some kind of string map.
    - element->push_column("Name:", te_command("d.name="));
    - element->push_column("Local id:", te_command("d.local_id_html="));
    - element->push_column("Info hash:", te_command("d.hash="));
    - element->push_column("Created:", te_command("cat=$convert.date=$d.creation_date=,\" \",$convert.time=$d.creation_date="));
    + element->push_column("name:", te_command("d.name="));
    + element->push_column("local id:", te_command("d.local_id_html="));
    + element->push_column("info hash:", te_command("d.hash="));
    + element->push_column("created:", te_command("cat=$convert.date=$d.creation_date=,\" \",$convert.time=$d.creation_date="));
    element->push_back("");
    - element->push_column("Directory:", te_command("d.directory="));
    - element->push_column("Base Path:", te_command("d.base_path="));
    - element->push_column("Tied to file:", te_command("d.tied_to_file="));
    - element->push_column("File stats:", te_command("cat=$if=$d.is_multi_file=\\,multi\\,single,\" \",$d.size_files=,\" files\""));
    + element->push_column("directory:", te_command("d.directory="));
    + element->push_column("base Path:", te_command("d.base_path="));
    + element->push_column("tied to file:", te_command("d.tied_to_file="));
    + element->push_column("file stats:", te_command("cat=$if=$d.is_multi_file=\\,multi\\,single,\" \",$d.size_files=,\" files\""));
    element->push_back("");
    - element->push_column("Chunks:", te_command("cat=(d.completed_chunks),\" / \",(d.size_chunks),\" * \",(d.chunk_size),\" (\",(d.wanted_chunks),\")\""));
    - element->push_column("Priority:", te_command("d.priority="));
    - element->push_column("Peer exchange:", te_command("cat=$if=$d.peer_exchange=\\,enabled\\,disabled,\\ ,"
    + element->push_column("chunks:", te_command("cat=(d.completed_chunks),\" / \",(d.size_chunks),\" * \",(d.chunk_size),\" (\",(d.wanted_chunks),\")\""));
    + element->push_column("priority:", te_command("d.priority="));
    + element->push_column("peer exchange:", te_command("cat=$if=$d.peer_exchange=\\,enabled\\,disabled,\\ ,"
    "$if=$d.is_pex_active=\\,active\\,$d.is_private=\\,private\\,inactive,"
    "\\ (,$d.size_pex=,/,$d.max_size_pex=,)"));
    - element->push_column("State changed:", te_command("convert.elapsed_time=$d.state_changed="));
    + element->push_column("state changed:", te_command("convert.elapsed_time=$d.state_changed="));
    element->push_back("");
    - element->push_column("Memory usage:", te_command("cat=$convert.mb=$pieces.memory.current=,\" MB\""));
    - element->push_column("Max memory usage:", te_command("cat=$convert.mb=$pieces.memory.max=,\" MB\""));
    - element->push_column("Free diskspace:", te_command("cat=$convert.mb=$d.free_diskspace=,\" MB\""));
    - element->push_column("Safe diskspace:", te_command("cat=$convert.mb=$pieces.sync.safe_free_diskspace=,\" MB\""));
    + element->push_column("memory usage:", te_command("cat=$convert.mb=$pieces.memory.current=,\" MB\""));
    + element->push_column("max memory usage:", te_command("cat=$convert.mb=$pieces.memory.max=,\" MB\""));
    + element->push_column("free diskspace:", te_command("cat=$convert.mb=$d.free_diskspace=,\" MB\""));
    + element->push_column("safe diskspace:", te_command("cat=$convert.mb=$pieces.sync.safe_free_diskspace=,\" MB\""));
    element->push_back("");
    - element->push_column("Connection type:", te_command("cat=(d.connection_current),\" \",(if,(d.accepting_seeders),"",\"no_seeders\")"));
    - element->push_column("Choke heuristic:", te_command("cat=(d.up.choke_heuristics),\", \",(d.down.choke_heuristics),\", \",(d.group)"));
    - element->push_column("Safe sync:", te_command("if=$pieces.sync.always_safe=,yes,no"));
    - element->push_column("Send buffer:", te_command("cat=$convert.kb=$network.send_buffer.size=,\" KB\""));
    - element->push_column("Receive buffer:", te_command("cat=$convert.kb=$network.receive_buffer.size=,\" KB\""));
    + element->push_column("connection type:", te_command("cat=(d.connection_current),\" \",(if,(d.accepting_seeders),"",\"no_seeders\")"));
    + element->push_column("choke heuristic:", te_command("cat=(d.up.choke_heuristics),\", \",(d.down.choke_heuristics),\", \",(d.group)"));
    + element->push_column("safe sync:", te_command("if=$pieces.sync.always_safe=,yes,no"));
    + element->push_column("send buffer:", te_command("cat=$convert.kb=$network.send_buffer.size=,\" KB\""));
    + element->push_column("receive buffer:", te_command("cat=$convert.kb=$network.receive_buffer.size=,\" KB\""));
    // TODO: Define a custom command for this and use $argument.0 instead of looking up the name multiple times?
    - element->push_column("Throttle:", te_command("branch=d.throttle_name=,\""
    + element->push_column("throttle:", te_command("branch=d.throttle_name=,\""
    "cat=$d.throttle_name=,\\\" [Max \\\","
    "$convert.throttle=$throttle.up.max=$d.throttle_name=,\\\"/\\\","
    "$convert.throttle=$throttle.down.max=$d.throttle_name=,\\\" KB] [Rate \\\","
    @@ -192,10 +192,10 @@ Download::create_info() {
    "cat=\"global\""));
    element->push_back("");
    - element->push_column("Upload:", te_command("cat=$convert.kb=$d.up.rate=,\" KB / \",$convert.xb=$d.up.total="));
    - element->push_column("Download:", te_command("cat=$convert.kb=$d.down.rate=,\" KB / \",$convert.xb=$d.down.total="));
    - element->push_column("Skipped:", te_command("cat=$convert.kb=$d.skip.rate=,\" KB / \",$convert.xb=$d.skip.total="));
    - element->push_column("Preload:", te_command("cat=$pieces.preload.type=,\" / \",$pieces.stats_preloaded=,\" / \",$pieces.stats_preloaded="));
    + element->push_column("upload:", te_command("cat=$convert.kb=$d.up.rate=,\" KB / \",$convert.xb=$d.up.total="));
    + element->push_column("download:", te_command("cat=$convert.kb=$d.down.rate=,\" KB / \",$convert.xb=$d.down.total="));
    + element->push_column("skipped:", te_command("cat=$convert.kb=$d.skip.rate=,\" KB / \",$convert.xb=$d.skip.total="));
    + element->push_column("preload:", te_command("cat=$pieces.preload.type=,\" / \",$pieces.stats_preloaded=,\" / \",$pieces.stats_preloaded="));
    element->set_column_width(element->column_width() + 1);
    diff -rupN src/ui/download_list.cc src-custom/ui/download_list.cc
    --- src/ui/download_list.cc 2012-03-13 17:40:49.000000000 +0530
    +++ src-custom/ui/download_list.cc 2013-06-06 01:54:59.404785502 +0530
    @@ -221,12 +221,12 @@ DownloadList::activate_display(Display d
    // Set title.
    switch (displayType) {
    case DISPLAY_DOWNLOAD_LIST:
    - control->ui()->window_title()->set_title("rTorrent " VERSION "/" +
    + control->ui()->window_title()->set_title("rtorrent-custom " VERSION "/" +
    std::string(torrent::version()) + " - " +
    rpc::call_command_string("session.name"));
    break;
    case DISPLAY_LOG:
    - control->ui()->window_title()->set_title("Log");
    + control->ui()->window_title()->set_title("log");
    break;
    default: break;
    diff -rupN src/ui/element_download_list.cc src-custom/ui/element_download_list.cc
    --- src/ui/element_download_list.cc 2012-01-19 15:48:01.000000000 +0530
    +++ src-custom/ui/element_download_list.cc 2013-06-06 01:54:59.404785502 +0530
    @@ -59,7 +59,7 @@ ElementDownloadList::ElementDownloadList
    m_window(NULL),
    m_view(NULL) {
    - receive_change_view("main");
    + receive_change_view("name");
    if (m_view == NULL)
    throw torrent::internal_error("View \"main\" must be present to initialize the main display.");
    @@ -153,7 +153,7 @@ ElementDownloadList::receive_command(con
    m_view->set_last_changed();
    } catch (torrent::input_error& e) {
    - lt_log_print(torrent::LOG_WARN, "Command failed: %s", e.what());
    + lt_log_print(torrent::LOG_WARN, "command failed: %s", e.what());
    return;
    diff -rupN src/ui/element_file_list.cc src-custom/ui/element_file_list.cc
    --- src/ui/element_file_list.cc 2012-01-19 15:48:01.000000000 +0530
    +++ src-custom/ui/element_file_list.cc 2013-06-06 01:54:59.408118826 +0530
    @@ -86,19 +86,19 @@ element_file_list_create_info() {
    element->set_column(1);
    element->set_interval(1);
    - element->push_back("File info:");
    + element->push_back("file info:");
    element->push_back("");
    - element->push_column("Filename:", te_command("fi.filename_last="));
    + element->push_column("filename:", te_command("fi.filename_last="));
    element->push_back("");
    - element->push_column("Size:", te_command("if=$fi.is_file=,$convert.xb=$f.size_bytes=,---"));
    - element->push_column("Chunks:", te_command("cat=$f.completed_chunks=,\" / \",$f.size_chunks="));
    - element->push_column("Range:", te_command("cat=$f.range_first=,\" - \",$f.range_second="));
    + element->push_column("size:", te_command("if=$fi.is_file=,$convert.xb=$f.size_bytes=,---"));
    + element->push_column("chunks:", te_command("cat=$f.completed_chunks=,\" / \",$f.size_chunks="));
    + element->push_column("range:", te_command("cat=$f.range_first=,\" - \",$f.range_second="));
    element->push_back("");
    - element->push_column("Queued:", te_command("cat=\"$if=$f.is_create_queued=,create\",\" \",\"$if=$f.is_resize_queued=,resize\""));
    - element->push_column("Prioritize:", te_command("cat=\"$if=$f.prioritize_first=,first\",\" \",\"$if=$f.prioritize_last=,last\""));
    + element->push_column("queued:", te_command("cat=\"$if=$f.is_create_queued=,create\",\" \",\"$if=$f.is_resize_queued=,resize\""));
    + element->push_column("prioritize:", te_command("cat=\"$if=$f.prioritize_first=,first\",\" \",\"$if=$f.prioritize_last=,last\""));
    element->set_column_width(element->column_width() + 1);
    diff -rupN src/ui/element_peer_list.cc src-custom/ui/element_peer_list.cc
    --- src/ui/element_peer_list.cc 2012-04-09 12:09:14.000000000 +0530
    +++ src-custom/ui/element_peer_list.cc 2013-06-06 01:54:59.404785502 +0530
    @@ -106,24 +106,24 @@ ElementPeerList::create_info() {
    element->set_column(1);
    element->set_interval(1);
    - element->push_back("Peer info:");
    + element->push_back("peer info:");
    element->push_back("");
    - element->push_column("Address:", te_command("cat=$p.address=,:,$p.port="));
    - element->push_column("Id:", te_command("p.id_html="));
    - element->push_column("Client:", te_command("p.client_version="));
    - element->push_column("Options:", te_command("p.options_str="));
    - element->push_column("Connected:", te_command("if=$p.is_incoming=,incoming,outgoing"));
    - element->push_column("Encrypted:", te_command("if=$p.is_encrypted=,yes,$p.is_obfuscated=,handshake,no"));
    + element->push_column("address:", te_command("cat=$p.address=,:,$p.port="));
    + element->push_column("id:", te_command("p.id_html="));
    + element->push_column("client:", te_command("p.client_version="));
    + element->push_column("options:", te_command("p.options_str="));
    + element->push_column("connected:", te_command("if=$p.is_incoming=,incoming,outgoing"));
    + element->push_column("encrypted:", te_command("if=$p.is_encrypted=,yes,$p.is_obfuscated=,handshake,no"));
    element->push_back("");
    - element->push_column("Snubbed:", te_command("if=$p.is_snubbed=,yes,no"));
    - element->push_column("Done:", te_command("p.completed_percent="));
    - element->push_column("Rate:", te_command("cat=$convert.kb=$p.up_rate=,\\ KB\\ ,$convert.kb=$p.down_rate=,\\ KB"));
    - element->push_column("Total:", te_command("cat=$convert.kb=$p.up_total=,\\ KB\\ ,$convert.kb=$p.down_total=,\\ KB"));
    + element->push_column("snubbed:", te_command("if=$p.is_snubbed=,yes,no"));
    + element->push_column("done:", te_command("p.completed_percent="));
    + element->push_column("rate:", te_command("cat=$convert.kb=$p.up_rate=,\\ KB\\ ,$convert.kb=$p.down_rate=,\\ KB"));
    + element->push_column("total:", te_command("cat=$convert.kb=$p.up_total=,\\ KB\\ ,$convert.kb=$p.down_total=,\\ KB"));
    element->set_column_width(element->column_width() + 1);
    - element->set_error_handler(new display::TextElementCString("No peer selected."));
    + element->set_error_handler(new display::TextElementCString("no peer selected."));
    return element;
    enjoy !!

    a screenshot !!

  • Yet another grey folder thread, help!

    Sorry for yet another grey folder thread, but here goes:
    Today, earlier, installed Firefox update, along with some addon updates for that program. Quit Firefox and attempt to relaunch, relaunch fails. Reset computer, thinking that will do the trick, I now have grey folder with question mark.
    Resolve attempts: reset pram = fail; apple care cd = will not launch/fail; disk utility from original install disks = fail; cannot get repair of disk or permissions to work, continually get error about "failing on exit"; safe mode launch = fail
    So, I've done everything, and I've come to conclusion that I am f***, and my HDD is fried (but I hope I am wrong).
    So, dear gurus, my question(s)
    A) Is my HDD salvageable at all? is there some trick to getting the AppleCare cd to work? Anything?!?!
    if not, then B) How can I recover my documents/music/pictures? Long story short, there are several things on there that never had a chance to make my back up schedule, and I desperately want to keep them. Any way to make/copy a disk image to save the docs/imgs, or Firewire them to an external hdd? Do I need to consider a professional HDD rescue?

    Looks like a mechanical failure, and Apple won't cover the replacement due to a drop it sustained a year or two ago (the power cable was in, and it fell on the connection point, denting that in, Apple states there is a critical board their and that it would be $950 Tier 3 repair which I can't afford). So I'm going to try a Firewire Migration and a few other things and see if that works. If not, oh well. Thanks everyone for the ideas!

  • How to cope with the case that a thread crash ?

    if a thread crash, how to notify other threads? Is there standard method to follow?

    Sounds like a job for Observer pattern. You'll have to handle the crash on your own though. Catch any exceptions and notify the observers.

  • Complete iPhoto event of daughter's prom gone.  Happened during iPhone 3 synch to mac air. No mojo, no weird key strokes, just another ordinary sync.  Event gone.  Apple no resolution.

    Complete iPhoto event of daughter's prom gone.  Happened during iPhone 3 synch to mac air. No mojo, no weird key strokes, just another ordinary sync.  Event gone.  Apple no resolution.

    With the amount of information you've provided it's impossible to offer a potential solution.  We can't see your computer so we need to know the details of your problem and setup, i.e.:
    what version of iPhoto are you using?
    what system version are you running?
    were the prom pictures on the iPhone 3 to begin with?
    what fixes have you tried?
    where is your library located?
    did you apply any updates or upgrades just prior to the problem occurring?
    are you running a "managed" or "referenced" library?
    what type of Mac?
    how much free space on your boot drive?
    OT

  • I just updated iTunes, since it crashes as soon as I opened it ..... any help?

    I just updated iTunes, since it crashes as soon as I opened it ..... any help?

    Let's try a repair install of iTunes first.
    Restart the PC. If you're using Vista or 7, now head into your Uninstall a program control panel, select "iTunes" and then click "Repair". If you're using XP, head into your Add or Remove Programs control panel, select "iTunes", click "Change" and then click "Repair".
    Can you launch your iTunes now?

  • TS1420 I have purchased a song. Just another day by Jon secada and it won't play

    I Purchased Jon secada ..just another day and it won't play.

    Delete it, and redownload it through past purchases. http://support.apple.com/kb/ht2519

  • Just Another insert language here Hacker,

    This is fun! Here is a chance to showoff your skills. Of course you can choose whatever language you want.
    Just another Perl hacker, or JAPH, typically refers to a Perl program which prints "Just another Perl hacker," (the comma is canonical  but is occasionally omitted). Short JAPH programs are often used as signatures in online forums, or as T-shirt designs. The phrase or acronym is also occasionally used (without code) for a signature.
    JAPH programs are classically done using extremely obfuscated methods, in the spirit of the Obfuscated C Contest. More recently, as the phenomenon has become so well known, the phrase is sometimes used in ordinary examples (without obfuscation). Even more recently the P of JAPH can also stand for Perl 6, Parrot or Pugs.
    Starting easy...
    Perl:
    $c='python';$_=`printf hack`;$_=~s;ck;;;;$c=~s%^(?!\x68)(.)(?2)(?1)(.)(?1)(?2)(?<!.{4}h)$%$2%;print j.substr($_,1),p,$c.','
    Let's go obfuscating!

    Wow, way to completely miss the point guys...
    linas wrote:
    It's an interesting code, cmtptr, since it seems to expose a bug in strace.
    Stracing it shows:
    stat(NULL, Just another ASM hacker,
    NULL) = 25
    write(0, NULL, 25 <unfinished ... exit status 0>
    The string  "Just another ASM hacker,\n" is 4A 75 73 74 20 61 6E 6F 74 68 65 72 20 41 53 4D 20 68 61 63 6B 65 72 2C 0A
    which takes the last to lines of words.
    If we disassemble the first two lines (gdb ./a.out, disas /r _start):
    0x0000000000400078 <_start+0>: ba 19 00 00 00 mov $0x19,%edx
    0x000000000040007d <_start+5>: b9 98 00 40 00 mov $0x400098,%ecx
    0x0000000000400082 <_start+10>: bb 01 00 00 00 mov $0x1,%ebx
    0x0000000000400087 <_start+15>: b8 04 00 00 00 mov $0x4,%eax
    0x000000000040008c <_start+20>: cd 80 int $0x80
    0x000000000040008e <_start+22>: 31 db xor %ebx,%ebx
    0x0000000000400090 <_start+24>: b8 01 00 00 00 mov $0x1,%eax
    0x0000000000400095 <_start+29>: cd 80 int $0x80
    0x0000000000400097 <_start+31>: c3 retq
    0x0000000000400098 <begin of the text>
    That's a syscall 4 (__NR_write), with parameters  1 (write to stdout), 0x400098 (address if the text) and 25 (text length).
    Finally it calls syscall 1 with parameter 0, ie. _exit(0).
    That's using linux32 syscalls (<asm/unistd_32.h>), but with 64 bits syscalls (<asm/unistd_64.h>) syscall 4 is stat and syscall 1 is write. Which matches what strace tried to output.
    $ file a.out
    a.out: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), statically linked, not stripped
    So the kernel manages to correctly run it even though it uses 32 bit syscalls (because it isn't using a x86-64 interface?) but strace doesn't notice it and shows the 64 bit functions.
    It took me a few reads and some experimenting/investigating before I understood what you were getting at, since I'm admittedly new to the 64-bit world.
    The code I wrote works because I'm invoking interrupt 0x80, while the 64-bit syscalls you (and strace) wanted to see are invoked using the "syscall" instruction (I suppose this is what you meant when you said it isn't using the x86-64 interface?).  I suppose my code should have been...
    [corey@sariss ~]$ cat asm.s
    .text
    .globl _start
    _start:
    .word 0xc748,0x19c2,0x0000,0x4800,0xc6c7,0x00a3,0x0040,0xc748
    .word 0x01c7,0x0000,0x4800,0xc0c7,0x0001,0x0000,0x050f,0x3148
    .word 0x48ff,0xc0c7,0x003c,0x0000,0x050f,0x4ac3,0x7375,0x2074
    .word 0x6e61,0x746f,0x6568,0x2072,0x5341,0x204d,0x6168,0x6b63
    .word 0x7265,0x0a2c
    [corey@sariss ~]$ as -o asm.o asm.s && ld asm.o
    [corey@sariss ~]$ ./a.out
    Just another ASM hacker,
    [corey@sariss ~]$ strace ./a.out
    execve("./a.out", ["./a.out"], [/* 46 vars */]) = 0
    write(1, "Just another ASM hacker,\n", 25Just another ASM hacker,
    ) = 25
    _exit(0) = ?
    [corey@sariss ~]$
    Thanks for pointing that out.  You caused me to learn something!
    And you're right, that does appear to be a bug in strace!
    Last edited by cmtptr (2010-03-08 01:05:29)

  • HT5390 have a Mac mini server in the data center no physical access. Is it possible to configure a remote "console" that allows shutdown  and reboot remotely ?

    A mini mac used for building sits in the data center normally we access via VNC network connection.
    I want to have "console" access to shutdown and reboot system.
    Reason. Updated to Mountain Lion OS X from 10.7.x and lost VNC connections, now host is down with no physical access.
    Alternate is to call data center and see if someone can cycls the power ?

    As mentioned by Linc there is no 'lights out' management for the Mac mini (or any current Mac). If the Mac is still running you can initiate a reboot via the GUI or commandline. If however it is completely crashed then there is a solution you could consider which is to get a managed power distribution strip. With this the power strip has its own network connection and lets you remotely turn off (and on) individual power sockets. This would then let you 'hard reboot' the Mac mini even if crashed.
    See http://www.apc.com/products/resource/include/techspec_index.cfm?base_sku=ap7921& tab=features

Maybe you are looking for

  • How can you use the Keyboard for a JComboBox within a JTable without F2

    I am brand new to Java and I can't seem to figure this out. I have a JTable with 4 columns. The first column is a jCheckBox which is working fine. The other three are JComboBoxes. They work fine when you click them and select from the list, but our e

  • Oracle initialization in progress due to logfile corruption - startup error

    Hi All! I m using Oracle Release 9.2.0.1.0. Due to power outage, it seems that one of its Redo files is corrupt and it is not getting started. My database is running in no archive mode and I donot have any backup for my data. I have performed the fol

  • How to get file name and set it as static text in a dialog

    Hi, I m new to InDesign Programming. I have a menu that creates a dialog with different controls in it. The dialog will appear only if there is an open file. I need to display the name of the open file as a static text in the dialog. I know to get th

  • IWeb Running Extremely SLOW...

    I am running the latest version on iWeb. I have about 8 or so photo albums included in my site and the software is extremely sluggish when switching between albums or to the page that shows the albums. It was not doing this earlier, when I was workin

  • MMBE table for line items

    Hi experts, I am currently developing a report same like MMBE. Currently MMBE is showing only the current stock at the warehouse. But i m sure there is line item behind this stock balance. I need to develop a report to show the stock for a particular