text:
Acattin Sane
Location: The Black Country
http://www.youtube.com/watch?v=8O0Spn2eaSk
"Be a good teammate."
Ol' Qwerty Bastard
OQB
Location: Frownland
better than the first single imo
anybody else?
Music Blog / RYM / Last.fm / Qwertyy's Journal of Music Reviews and Other Assorted Ramblings
Originally Posted by The Batlord
I'm not even mad. Seriously I'm not. You're a good dude, and I think and hope you'll become something good
The beat is good. Wonder who produced it, I know some American guy made Space.
Album is going to be interesting.
I predict it will have one or two really good tracks not including what we've heard so far and the rest will be forgettable. Will be a 6/10 and Godfather will still be the best from this year so far.
Hope it's 10/10 though obviously.
at the very least it should be his 3rd best release. wont take much. doubt he ever tops his first two though.
Originally Posted by Qwertyy
Yeah he's not touching those again.
His third was pretty decent though. Sirens and Hardback were as good as anything he's done. But he ruined it a bit with the features, that Lily Allen track was awful.
I don't think his 4th album was too bad, wasn't aimed at the Grime fans obviously but for a pop album from the scene it's better than everybody else's attempt.
He ought to be ashamed of his last one. He dragged his name and reputation through the gutter there. Horrible album.
yeah. been a downhill slide ever since his 2nd though, with each one being less and less like what he's really capable of. considering how long he's been around and how the grime scene has evolved i don't see how he couldn't start a comeback though. hopefully i'm not too let down with this one.
Anyone got it?
listening now. 5 tracks in it and it's hella fire so far. hoping it keeps up.
hottest production around for sure.
I'll get it tomorrow then.
the middle section let me down but it's coming back. i'll make a thread in the new release section when i'm done with it.
the first 7 songs are top tier. thought this was gonna be a huge release after i made it that far, but there are some really skippable cuts after that. still definitely a better side of Diz, nice to see him back to it.
Rascal Flats, Country, Folk & World Music Forum, 17 replies
Rascal Flats, Country Forum, 3 replies
Best Dizzee Rascit song!, Rap & Hip-Hop Forum, 1 replies
Dizzee Rascal V Asher D, Rap & Hip-Hop Forum, 0 replies


text:
1Voice cast
2Soundtrack
2.1Track listing
3Release dates
5Other websites
Rich Moore
Phil Johnston
Jennifer Lee
Clark Spencer
John C. Reilly
Jack McBrayer
William J. Caparella
Walt Disney Studios Motion Pictures
October 29, 2012 (2012-10-29) (world premiere)
November 1, 2012 (2012-11-01) (Turkey)
November 2, 2012 (2012-11-02) (United States)
November 2, 2012 (2012-11-02) (Togo)
November 21, 2012 (2012-11-21) (United Kingdom)
101 minutes[1]
$165 million[1]
$471,222,889[1]
Wreck-It Ralph is an 2012 American 3D computer animated comedy movie based on the story of destiny Wreck-It-Ralph. It was produced by Walt Disney Animation Studios and distributed by Walt Disney Pictures.[2]
The movie tells the story of Wreck-It Ralph. He is an arcade game villain. He does not want to be a villain anymore. He wants to become a hero. Wreck-It Ralph released to the world on October 29, 2012. It was the 51st movie and released in the United States on November 2, 2012.
A sequel called Wreck-It Ralph 2: Who Broke the Internet was released on November 21, 2018.[3]
Voice cast[change | change source]
John C. Reilly as Wreck-It Ralph, the villain of Fix-It Felix, Jr.[2]
Sarah Silverman as Vanellope von Schweetz, a racer/glitch in Sugar Rush[2]
Jack McBrayer as Fix-It Felix, Jr., the hero of Fix-It Felix Jr.[2][4]
Jane Lynch as Sergeant Calhoun, the lead character of Hero's Duty[2]
Alan Tudyk as King Candy, the fake ruler of Sugar Rush/Turbo, the former star racer of TurboTime and a revenge seeker for the arcade.[5]
Mindy Kaling as Taffyta Muttonfudge, a racer in Sugar Rush
Joe Lo Truglio as Markowski, the drunk soldier from Hero's Duty
Dennis Haysbert as General Hologram, a general in Hero's Duty[6]
Jamie Elman as Rancis Fluggerbutter
Stefanie Scott as Moppet Girl, a young arcade enthusiast
Adam Carolla as Wynnchel, Sugar Rush security[7]
Horatio Sanz as Duncan, Sugar Rush security[7]
Raymond Persi as Gene, a Nicelander who lives in the game Fix-It Felix, Jr.[8]
Edie McClurg as Mary, a Nicelander who lives in the game Fix-It Felix, Jr.[7]
Rachael Harris as Deanna, a Nicelander who lives in the game Fix-It Felix, Jr.[7]
Ed O'Neill as Mr. Litwak, owner of Litwak's Family Fun Center & Arcade[7]
Skrillex as DJ[9]
Kyle Hebert as Ryu from Street Fighter[7]
Reuben Langdon as Ken Masters from Street Fighter[7]
Gerald C. Rivers as M. Bison from Street Fighter[7]
Roger Craig Smith as Sonic from Sonic the Hedgehog[7][10]
Maurice LaMarche as the bartender from Tapper
Jamie Sparer Roberts as Yuni Verse from Dance Dance Revolution[11]
Soundtrack[change | change source]
The film's score was composed by Henry Jackman.
Film score by
Sony Pictures Studios (Culver City, California)
Film score
Walt Disney Animation Studios chronology
(2011) Wreck-It Ralph
(2012) Frozen
Henry Jackman chronology
Abraham Lincoln: Vampire Hunter
(2012) G.I. Joe: Retaliation
Track listing[change | change source]
All music composed by Henry Jackman (except 1–6)[12].
1. "When Can I See You Again?" Owl City 3:38
2. "Wreck-It, Wreck-It Ralph" Buckner & Garcia 2:59
3. "Celebration" Kool & the Gang 3:40
4. "Sugar Rush" AKB48 3:14
5. "Bug Hunt (Noisia Remix)" Skrillex 7:04
6. "Shut Up and Drive" Rihanna 3:32
7. "Wreck-It Ralph" 1:33
8. "Life in the Arcade" 0:43
9. "Jumping Ship" 1:06
10. "Rocket Fiasco" 5:48
11. "Vanellope von Schweetz" 2:57
12. "Royal Raceway" 3:23
13. "Cupcake Breakout" 1:12
14. "Candy Vandals" 1:39
15. "Turbo Flashback" 1:42
16. "Laffy Taffies" 1:35
17. "One Minute to Win It" 1:17
18. "Vanellope's Hideout" 2:33
19. "Messing with the Program" 1:20
20. "King Candy" 2:11
21. "Broken-Karted" 2:49
22. "Out of the Penthouse, Off to the Race" 2:51
23. "Sugar Rush Showdown" 4:15
24. "You're My Hero" 4:16
25. ""Arcade Finale" 3:19
Release dates[change | change source]
Turkey November 1, 2012
Brazil November 1, 2012
Denmark November 1, 2012
United Arab Emirates November 1, 2012
Bhutan November 2, 2012
South Africa November 2, 2012
Sri Lanka November 2, 2012
United States November 2, 2012
September 16, 2022 (122 minutes - Signature Edition)
Croatia November 2, 2012
Scotland November 2, 2012
Togo November 2, 2012
Uzbekistan November 2, 2012
Colombia November 2, 2012
China November 7, 2012
Sweden November 18, 2012
Indonesia November 18, 2012
Cook Islands November 18, 2012
Myanmar November 18, 2012
Turkmenistan November 21, 2012
United Kingdom November 21, 2012
Albania November 21, 2012
Egypt November 21, 2012
Norway November 28, 2012
Japan December 12, 2012
Chile December 28, 2012
India December 29, 2012
Bosnia and Herzegovina January 4, 2013
Lesotho January 11, 2013
Georgia February 8, 2013
Tunisia February 15, 2013
Kosovo March 2, 2013
Niger March 23, 2013
Kyrgyzstan May 16, 2013
Faroe Islands September 30, 2013
Algeria October 15, 2013
Laos October 31, 2013
Guyana October 31, 2013
↑ 1.0 1.1 1.2 "Wreck-It Ralph (2012)". Box Office Mojo. Retrieved November 12, 2012.
↑ 2.0 2.1 2.2 2.3 2.4 "Disney Announces CG Comedy Adventure Wreck-It Ralph" (Press release). Walt Disney Animation Studios June 13, 2011 via ComingSoon.net. June 13, 2011. Archived from the original on December 29, 2012. Retrieved June 13, 2011. {{cite press release}}: Italic or bold markup not allowed in: |publisher= (help)
↑ "Sequel to "Wreck-It Ralph" Hits Theaters on March 9, 2018". The Walt Disney Company. June 30, 2016. Archived from the original on August 23, 2016.
↑ Eisenberg, Eric (August 21, 2011). "'Wreck-It Ralph' Footage from D23 Features 8-Bit Action, Plenty of Cameos". CinemaBlend.com. Archived from the original on December 29, 2012. Retrieved August 30, 2011.
↑ Lussier, Germain (July 12, 2012). "Alan Tudyk Announced for 'Wreck-It Ralph' Cast; Skrillex Scoring Some Scenes (Comic-Con 2012)". SlashFilm. Retrieved July 13, 2012.
↑ Haysbert, Dennis (June 18, 2012). "Staring Dennis Haysbert". Retrieved June 19, 2012 – via Facebook. [non-primary source needed]
↑ 7.0 7.1 7.2 7.3 7.4 7.5 7.6 7.7 7.8 "Walt Disney Animation Studios Reveals Key Cast Members Joining 'Wreck-It-Ralph'" (Press release). Walt Disney Animation Studios. July 19, 2012. Archived from the original on December 29, 2012. Retrieved July 19, 2012. {{cite press release}}: Invalid |url-status=np (help)
↑ Tiffany (October 14, 2012). "Wreck-It Ralph Voice Recording Session and Press Day #DisneyMoviesEvent". Faboulus Finds. Archived from the original on October 25, 2012. Retrieved October 23, 2012.
↑ Ashurst, Sam (September 17, 2012). "Wreck-It Ralph's Skrillex cameo revealed". Total Film. Retrieved October 23, 2012.
↑ Vespe, Eric "Quint" (July 13, 2012). "Wreck-It Ralph shows 10 minutes at Comic-Con and wins the audience by being the Who Framed Roger Rabbit for video game geeks!". Ain't It Cool News. Retrieved July 13, 2012.
↑ "Wreck-It Ralph "Game Changer" TV Spot". September 24, 2012. Retrieved October 15, 2012 – via YouTube.
↑ "Wreck-It Ralph (Soundtrack)". Amazon.com. Retrieved September 29, 2012.
Wikimedia Commons has media related to Wreck-It Ralph.
Wikiquote has a collection of quotations related to: Wreck-It Ralph
Wreck-It Ralph at the Big Cartoon DataBase
Wreck-It Ralph at Walt Disney Animation Studios
Wreck-It Ralph on IMDb
Wreck-It Ralph at Box Office Mojo
Wreck-It Ralph at Rotten Tomatoes
Wreck-It Ralph at Metacritic
Disney theatrical animated features
Snow White and the Seven Dwarfs (1937)
Pinocchio (1940)
Dumbo (1941)
Bambi (1942)
Saludos Amigos (1942)
The Three Caballeros (1944)
Make Mine Music (1946)
Fun and Fancy Free (1947)
Melody Time (1948)
The Adventures of Ichabod and Mr. Toad (1949)
Cinderella (1950)
Peter Pan (1953)
Lady and the Tramp (1955)
One Hundred and One Dalmatians (1961)
The Sword in the Stone (1963)
The Aristocats (1970)
The Many Adventures of Winnie the Pooh (1977)
The Rescuers (1977)
The Fox and the Hound (1981)
The Black Cauldron (1985)
The Great Mouse Detective (1986)
Oliver & Company (1988)
The Rescuers Down Under (1990)
Beauty and the Beast (1991)
Aladdin (1992)
Pocahontas (1995)
The Hunchback of Notre Dame (1996)
Hercules (1997)
Dinosaur (2000)
The Emperor's New Groove (2000)
Atlantis: The Lost Empire (2001)
Lilo & Stitch (2002)
Treasure Planet (2002)
The Princess and the Frog (2009)
Tangled (2010)
Winnie the Pooh (2011)
Wreck-It Ralph (2012)
Frozen (2013)
Zootopia (2016)
Moana (2016)
Ralph Breaks the Internet (2018)
Frozen II (2019)
Raya and the Last Dragon (2021)
Encanto (2021)
Strange World (2022)
Monsters, Inc. (2001)
Finding Nemo (2003)
The Incredibles (2004)
Ratatouille (2007)
WALL-E (2008)
Cars 2 (2011)
Brave (2012)
Monsters University (2013)
Inside Out (2015)
The Good Dinosaur (2015)
Finding Dory (2016)
Onward (2020)
Soul (2020; international release)
Luca (2021; international release)
Turning Red (2022)
Lightyear (2022)
Disneytoon Studios
DuckTales the Movie: Treasure of the Lost Lamp (1990)
The Tigger Movie (2000)
Return to Never Land (2002)
The Jungle Book 2 (2003)
Piglet's Big Movie (2003)
Pooh's Heffalump Movie (2005)
Bambi II (2006; international release)
Tinker Bell and the Great Fairy Rescue (2010; international release)
Secret of the Wings (2012; limited release)
Planes (2013)
The Pirate Fairy (2014; limited release)
Planes: Fire & Rescue (2014)
Tinker Bell and the Legend of the NeverBeast (2015; limited release)
Disney TV Animation
Doug's 1st Movie (1999)
Recess: School's Out (2001)
Teacher's Pet (2004)
Phineas and Ferb the Movie: Across the 2nd Dimension (2011; international release)
20th Century Animation
Spies in Disguise (2019)
Ron's Gone Wrong (2021)
The Bob's Burgers Movie (2022)
Other Disney units
The Wild (2006)
A Christmas Carol (2009)
Gnomeo & Juliet (2011)
Mars Needs Moms (2011)
Frankenweenie (2012)
Strange Magic (2015)
with animation
The Reluctant Dragon (1941)
Victory Through Air Power (1943)
So Dear to My Heart (1948)
Pete's Dragon (1977)
Who Framed Roger Rabbit (1988)
James and the Giant Peach (1996)
The Lizzie McGuire Movie (2003)
Enchanted (2007)
Mary Poppins Returns (2018)
Disney's thatPOWER (2024)
Unproduced films
Live-action adaptations and remakes
Walt Disney Animation Studios short films (Academy Award Review)
MusicBrainz release group
Retrieved from "https://simple.wikipedia.org/w/index.php?title=Wreck-It_Ralph&oldid=8594843"
English-language movies
2012 action movies
2010s American adventure movies
2012 animated movies
2012 fantasy movies
2012 science fiction movies
American animated movies
American action comedy movies
American family movies
American fantasy-comedy movies
American science fiction movies
2010s computer-animated movies
Disney animated movies
2010s English-language movies
Movies about revenge
CS1 errors: markup
All pages needing factual verification
Wikipedia articles needing factual verification
Pages using infobox movie with unknown parameters
Commons link from Wikidata
Articles with MusicBrainz release group identifiers

redpajama_set_name: RedPajamaCommonCrawl


Uptown Update: 4635 Broadway Getting A Much-Needed Makeover?
4635 Broadway Getting A Much-Needed Makeover?
We noticed the other day while taking a stroll that all the stores in the 4635-4641 North Broadway building are having everything-must-go sales and all are closing on September 30th. They include Da Closet Thrift Shop, Da Spot clothing store, Afrikiko Hair & Fashion Boutique, and Hair Studio. Da Spot has a sign on its door saying it will be relocating to Devon Avenue in October. We're not sure what the plans are for the others; if they want to stay in business, Uptown has enough empty storefronts available for them to do so.
A little research reveals that building permits for a gut rehab of the building, including the storefronts, were issued this past July. In 2013, Lakepointe Properties presented a plan for the building that included adding a fourth level to it. The July permits don't reflect an addition, so we assume that part of the rehab has been scuttled. The upper floors are looking pretty scruffy right now with boarded-up windows and mangled shades, so we're hoping for great improvements when the rehab is done.
The building dates back to 1905, and it's survived this long, but the last couple decades have been rough on it. It was at one time owned by notorious developer Mohammed T. Siddiqi, who was involved in some shady financial doings with Sunrise Equities and Broadway Bank (both bankrupt and out of business now). Not surprisingly, the building went into foreclosure under his stewardship. It was declared a Gang & Drug House by the City of Chicago in 2010, and has been in and out of Housing Court ever since. Most notably, it was the site of a six-hour fugitive standoff in 2011, when the Red Line was shut down and SWAT sharpshooters were in place on rooftops surrounding the building.
With the rehab of the Wilson Red Line going on, we hope for good things to happen on the other side of the street as well.
Agreed about Uptown Bikes, a real treasure is this desolate stretch, hopefully more people will discover them after all the dust settles.
This stretch to Wilson will be virtually unrecognizable in a couple of years. Take photos for your scrapbooks now.
I hope you're right. Time to weed out these seedy businesses and get rid of the crime in the area.
I'm thrilled to see anything on this block getting some much needed TLC. That whole side of the street is a major eyesore.
This is great news! Yes, there are one or two good businesses in this building that I hope aren't too adversely impacted, but I'm also hoping a lot of the loitering in recent months outside of the stores to be closed, also subsides.


text:
#include "cairoint.h"

#include "cairo-xcb.h"
#include "cairo-xcb-private.h"

#if CAIRO_HAS_XCB_DRM_FUNCTIONS
#include <xcb/dri2.h>
#endif

#define AllPlanes ((unsigned) -1)
#define CAIRO_ASSUME_PIXMAP 20
#define XLIB_COORD_MAX 32767

#if CAIRO_HAS_XLIB_XCB_FUNCTIONS
slim_hidden_proto (cairo_xcb_surface_create);
slim_hidden_proto (cairo_xcb_surface_create_for_bitmap);
slim_hidden_proto (cairo_xcb_surface_create_with_xrender_format);
#endif

#if CAIRO_HAS_DRM_SURFACE && CAIRO_HAS_XCB_DRM_FUNCTIONS
#include "drm/cairo-drm-private.h"
#endif

/**
 * SECTION:cairo-xcb
 * @Title: XCB Surfaces
 * @Short_Description: X Window System rendering using the XCB library
 * @See_Also: #cairo_surface_t
 *
 * The XCB surface is used to render cairo graphics to X Window System
 * windows and pixmaps using the XCB library.
 *
 * Note that the XCB surface automatically takes advantage of the X render
 * extension if it is available.
 */

#if CAIRO_HAS_XCB_SHM_FUNCTIONS
static cairo_status_t
_cairo_xcb_surface_create_similar_shm (cairo_xcb_surface_t *other,
				       pixman_format_code_t pixman_format,
				       int width, int height,
				       cairo_surface_t **out)
{
    size_t size, stride;
    cairo_xcb_shm_info_t *shm_info;
    cairo_status_t status;
    cairo_surface_t *image;

    stride = CAIRO_STRIDE_FOR_WIDTH_BPP (width, PIXMAN_FORMAT_BPP (pixman_format));
    size = stride * height;
    if (size < CAIRO_XCB_SHM_SMALL_IMAGE)
	return CAIRO_INT_STATUS_UNSUPPORTED;

    status = _cairo_xcb_connection_allocate_shm_info (other->connection,
						      size, &shm_info);
    if (unlikely (status))
	return status;

    image = _cairo_image_surface_create_with_pixman_format (shm_info->mem,
							    pixman_format,
							    width, height,
							    stride);
    status = image->status;
    if (unlikely (status)) {
	_cairo_xcb_shm_info_destroy (shm_info);
	return status;
    }

    status = _cairo_user_data_array_set_data (&image->user_data,
					      (const cairo_user_data_key_t *) other->connection,
					      shm_info,
					      (cairo_destroy_func_t) _cairo_xcb_shm_info_destroy);
    if (unlikely (status)) {
	cairo_surface_destroy (image);
	_cairo_xcb_shm_info_destroy (shm_info);
	return status;
    }

    *out = image;
    return CAIRO_STATUS_SUCCESS;
}
#endif

cairo_surface_t *
_cairo_xcb_surface_create_similar_image (cairo_xcb_surface_t *other,
					 cairo_content_t content,
					 int width, int height)
{
    cairo_surface_t *image = NULL;
    pixman_format_code_t pixman_format;

    /* XXX choose pixman_format from connection->image_formats */
    switch (content) {
    case CAIRO_CONTENT_ALPHA:
	pixman_format = PIXMAN_a8;
	break;
    case CAIRO_CONTENT_COLOR:
	pixman_format = PIXMAN_x8r8g8b8;
	break;
    default:
	ASSERT_NOT_REACHED;
    case CAIRO_CONTENT_COLOR_ALPHA:
	pixman_format = PIXMAN_a8r8g8b8;
	break;
    }

#if CAIRO_HAS_XCB_SHM_FUNCTIONS
    if (other->flags & CAIRO_XCB_HAS_SHM) {
	cairo_status_t status;

	status = _cairo_xcb_surface_create_similar_shm (other,
							pixman_format,
							width, height,
							&image);
	if (_cairo_status_is_error (status))
	    return _cairo_surface_create_in_error (status);
    }
#endif

    if (image == NULL) {
	image = _cairo_image_surface_create_with_pixman_format (NULL,
								pixman_format,
								width, height,
								0);
    }

    return image;
}

cairo_surface_t *
_cairo_xcb_surface_create_similar (void			*abstract_other,
				   cairo_content_t	 content,
				   int			 width,
				   int			 height)
{
    cairo_xcb_surface_t *other = abstract_other;
    cairo_xcb_surface_t *surface;
    cairo_xcb_connection_t *connection;
    xcb_pixmap_t pixmap;
    cairo_status_t status;

    if (width > XLIB_COORD_MAX || height > XLIB_COORD_MAX)
	return NULL;

    if (width <= 0 || height <= 0)
	return NULL;

#if CAIRO_HAS_DRM_SURFACE && CAIRO_HAS_XCB_DRM_FUNCTIONS
    if (other->drm != NULL) {
	cairo_surface_t *drm;

	drm = _cairo_drm_surface_create_similar (other->drm, content, width, height);
	if (drm != NULL)
	    return drm;
    }
#endif

    if ((other->flags & CAIRO_XCB_HAS_RENDER) == 0)
	return _cairo_xcb_surface_create_similar_image (other, content, width, height);

    connection = other->connection;
    status = _cairo_xcb_connection_acquire (connection);
    if (unlikely (status))
	return _cairo_surface_create_in_error (status);

    status =_cairo_xcb_connection_take_socket (connection);
    if (unlikely (status)) {
	_cairo_xcb_connection_release (connection);
	return _cairo_surface_create_in_error (status);
    }

    if (content == other->base.content) {
	pixmap = _cairo_xcb_connection_create_pixmap (connection,
						      other->depth,
						      other->drawable,
						      width, height);

	surface = (cairo_xcb_surface_t *)
	    _cairo_xcb_surface_create_internal (other->screen,
						pixmap, TRUE,
						other->pixman_format,
						other->xrender_format,
						width, height);
    } else {
	cairo_format_t format;
	pixman_format_code_t pixman_format;

	/* XXX find a compatible xrender format */
	switch (content) {
	case CAIRO_CONTENT_ALPHA:
	    pixman_format = PIXMAN_a8;
	    format = CAIRO_FORMAT_A8;
	    break;
	case CAIRO_CONTENT_COLOR:
	    pixman_format = PIXMAN_x8r8g8b8;
	    format = CAIRO_FORMAT_RGB24;
	    break;
	default:
	    ASSERT_NOT_REACHED;
	case CAIRO_CONTENT_COLOR_ALPHA:
	    pixman_format = PIXMAN_a8r8g8b8;
	    format = CAIRO_FORMAT_ARGB32;
	    break;
	}

	pixmap = _cairo_xcb_connection_create_pixmap (connection,
						      PIXMAN_FORMAT_DEPTH (pixman_format),
						      other->drawable,
						      width, height);

	surface = (cairo_xcb_surface_t *)
	    _cairo_xcb_surface_create_internal (other->screen,
						pixmap, TRUE,
						pixman_format,
						connection->standard_formats[format],
						width, height);
    }

    if (unlikely (surface->base.status))
	_cairo_xcb_connection_free_pixmap (connection, pixmap);

    _cairo_xcb_connection_release (connection);

    return &surface->base;
}

static cairo_status_t
_cairo_xcb_surface_finish (void *abstract_surface)
{
    cairo_xcb_surface_t *surface = abstract_surface;
    cairo_status_t status;

    if (surface->fallback != NULL) {
	cairo_surface_finish (surface->fallback);
	cairo_surface_destroy (surface->fallback);
    }

    cairo_list_del (&surface->link);

#if CAIRO_HAS_DRM_SURFACE && CAIRO_HAS_XCB_DRM_FUNCTIONS
    if (surface->drm != NULL) {
	cairo_surface_finish (surface->drm);
	cairo_surface_destroy (surface->drm);

	xcb_dri2_destroy_drawable (surface->connection->xcb_connection,
				   surface->drawable);
    }
#endif

    status = _cairo_xcb_connection_acquire (surface->connection);
    if (status == CAIRO_STATUS_SUCCESS) {
	if (_cairo_xcb_connection_take_socket (surface->connection) == CAIRO_STATUS_SUCCESS) {
	    if (surface->picture != XCB_NONE) {
		_cairo_xcb_connection_render_free_picture (surface->connection,
							   surface->picture);
	    }

	    if (surface->owns_pixmap)
		_cairo_xcb_connection_free_pixmap (surface->connection, surface->drawable);
	}
	_cairo_xcb_connection_release (surface->connection);
    }

    _cairo_xcb_connection_destroy (surface->connection);

    return status;
}

static void
_destroy_image (pixman_image_t *image, void *data)
{
    free (data);
}

#if CAIRO_HAS_XCB_SHM_FUNCTIONS
static cairo_int_status_t
_cairo_xcb_surface_create_shm_image (cairo_xcb_surface_t *target,
				     cairo_image_surface_t **image_out,
				     cairo_xcb_shm_info_t **shm_info_out)
{
    cairo_image_surface_t *image;
    cairo_xcb_shm_info_t *shm_info;
    cairo_status_t status;
    size_t size, stride;

    if ((target->flags & CAIRO_XCB_HAS_SHM) == 0)
	return CAIRO_INT_STATUS_UNSUPPORTED;

    stride = CAIRO_STRIDE_FOR_WIDTH_BPP (target->width,
					 PIXMAN_FORMAT_BPP (target->pixman_format));
    size = stride * target->height;
    if (size < CAIRO_XCB_SHM_SMALL_IMAGE) {
	target->flags &= ~CAIRO_XCB_HAS_SHM;
	return CAIRO_INT_STATUS_UNSUPPORTED;
    }

    status = _cairo_xcb_connection_allocate_shm_info (target->screen->connection,
						      size, &shm_info);
    if (unlikely (status))
	return status;

    image = (cairo_image_surface_t *)
	_cairo_image_surface_create_with_pixman_format (shm_info->mem,
							target->pixman_format,
							target->width,
							target->height,
							stride);
    status = image->base.status;
    if (unlikely (status)) {
	_cairo_xcb_shm_info_destroy (shm_info);
	return status;
    }

    status = _cairo_user_data_array_set_data (&image->base.user_data,
					      (const cairo_user_data_key_t *) target->connection,
					      shm_info,
					      (cairo_destroy_func_t) _cairo_xcb_shm_info_destroy);
    if (unlikely (status)) {
	cairo_surface_destroy (&image->base);
	_cairo_xcb_shm_info_destroy (shm_info);
	return status;
    }

    *image_out = image;
    *shm_info_out = shm_info;
    return CAIRO_STATUS_SUCCESS;
}
#endif

static cairo_status_t
_get_shm_image (cairo_xcb_surface_t     *surface,
		cairo_image_surface_t  **image_out)
{
#if CAIRO_HAS_XCB_SHM_FUNCTIONS
    cairo_image_surface_t *image;
    cairo_xcb_shm_info_t *shm_info;
    cairo_status_t status;

    status = _cairo_xcb_surface_create_shm_image (surface, &image, &shm_info);
    if (unlikely (status))
	return status;

    if (! surface->base.is_clear) {
	status = _cairo_xcb_connection_shm_get_image (surface->connection,
						      surface->drawable,
						      0, 0,
						      surface->width,
						      surface->height,
						      shm_info->shm,
						      shm_info->offset);
	if (unlikely (status))
	    return status;
    } else {
	memset (image->data, 0, image->stride * image->height);
    }

    *image_out = image;
    return CAIRO_STATUS_SUCCESS;
#else
    return CAIRO_INT_STATUS_UNSUPPORTED;
#endif
}

static cairo_status_t
_get_image (cairo_xcb_surface_t		 *surface,
	    cairo_bool_t		  use_shm,
	    cairo_image_surface_t	**image_out)
{
    cairo_image_surface_t *image;
    cairo_xcb_connection_t *connection;
    xcb_get_image_reply_t *reply;
    cairo_status_t status;

    if (surface->base.is_clear || surface->deferred_clear) {
	image = (cairo_image_surface_t *)
	    _cairo_image_surface_create_with_pixman_format (NULL,
							    surface->pixman_format,
							    surface->width,
							    surface->height,
							    0);
	*image_out = image;
	return image->base.status;
    }

    connection = surface->connection;

    status = _cairo_xcb_connection_acquire (connection);
    if (unlikely (status))
	return status;

    status = _cairo_xcb_connection_take_socket (connection);
    if (unlikely (status))
	goto FAIL;

    if (use_shm) {
	status = _get_shm_image (surface, image_out);
	if (status != CAIRO_INT_STATUS_UNSUPPORTED)
	    goto FAIL;
    }

    if (surface->use_pixmap == 0) {
	status = _cairo_xcb_connection_get_image (connection,
						  surface->drawable,
						  0, 0,
						  surface->width,
						  surface->height,
						  &reply);
	if (unlikely (status))
	    goto FAIL;
    } else {
	surface->use_pixmap--;
	reply = NULL;
    }

    if (reply == NULL && ! surface->owns_pixmap) {
	/* xcb_get_image_t from a window is dangerous because it can
	 * produce errors if the window is unmapped or partially
	 * outside the screen. We could check for errors and
	 * retry, but to keep things simple, we just create a
	 * temporary pixmap
	 */
	xcb_pixmap_t pixmap;
	xcb_gcontext_t gc;

	gc = _cairo_xcb_screen_get_gc (surface->screen,
				       surface->drawable,
				       surface->depth);
	pixmap = _cairo_xcb_connection_create_pixmap (connection,
						      surface->depth,
						      surface->drawable,
						      surface->width,
						      surface->height);

	/* XXX IncludeInferiors? */
	_cairo_xcb_connection_copy_area (connection,
					 surface->drawable,
					 pixmap, gc,
					 0, 0,
					 0, 0,
					 surface->width,
					 surface->height);

	_cairo_xcb_screen_put_gc (surface->screen, surface->depth, gc);

	status = _cairo_xcb_connection_get_image (connection,
						  pixmap,
						  0, 0,
						  surface->width,
						  surface->height,
						  &reply);
	_cairo_xcb_connection_free_pixmap (connection, pixmap);

	if (unlikely (status))
	    goto FAIL;
    }

    if (unlikely (reply == NULL)) {
	status = _cairo_error (CAIRO_STATUS_NO_MEMORY);
	goto FAIL;
    }

    /* XXX byte swap */
    /* XXX format conversion */
    assert (reply->depth == surface->depth);

    image = (cairo_image_surface_t *)
	_cairo_image_surface_create_with_pixman_format
	(xcb_get_image_data (reply),
	 surface->pixman_format,
	 surface->width,
	 surface->height,
	 CAIRO_STRIDE_FOR_WIDTH_BPP (surface->width,
				     PIXMAN_FORMAT_BPP (surface->pixman_format)));
    status = image->base.status;
    if (unlikely (status)) {
	free (reply);
	goto FAIL;
    }

    assert (xcb_get_image_data_length (reply) == image->height * image->stride);

    pixman_image_set_destroy_function (image->pixman_image, _destroy_image, reply);

    _cairo_xcb_connection_release (connection);

    /* synchronisation point */
    surface->marked_dirty = FALSE;

    *image_out = image;
    return CAIRO_STATUS_SUCCESS;

FAIL:
    _cairo_xcb_connection_release (connection);
    return status;
}

static cairo_status_t
_cairo_xcb_surface_acquire_source_image (void *abstract_surface,
					 cairo_image_surface_t **image_out,
					 void **image_extra)
{
    cairo_xcb_surface_t *surface = abstract_surface;
    cairo_image_surface_t *image;
    cairo_status_t status;

    if (surface->drm != NULL && ! surface->marked_dirty) {
	return _cairo_surface_acquire_source_image (surface->drm,
						    image_out, image_extra);
    }

    if (surface->fallback != NULL) {
	image = (cairo_image_surface_t *) cairo_surface_reference (surface->fallback);
	goto DONE;
    }

    image = (cairo_image_surface_t *)
	_cairo_surface_has_snapshot (&surface->base,
				     &_cairo_image_surface_backend);
    if (image != NULL) {
	image = (cairo_image_surface_t *) cairo_surface_reference (&image->base);
	goto DONE;
    }

    status = _get_image (surface, FALSE, &image);
    if (unlikely (status))
	return status;

    cairo_surface_attach_snapshot (&surface->base, &image->base, NULL);

DONE:
    *image_out = image;
    *image_extra = NULL;
    return CAIRO_STATUS_SUCCESS;
}

static void
_cairo_xcb_surface_release_source_image (void *abstract_surface,
					 cairo_image_surface_t *image,
					 void *image_extra)
{
    cairo_xcb_surface_t *surface = abstract_surface;

    if (surface->drm != NULL && ! surface->marked_dirty) {
	return _cairo_surface_release_source_image (surface->drm,
						    image, image_extra);
    }

    cairo_surface_destroy (&image->base);
}

static cairo_bool_t
_cairo_xcb_surface_get_extents (void *abstract_surface,
				cairo_rectangle_int_t *extents)
{
    cairo_xcb_surface_t *surface = abstract_surface;

    extents->x = extents->y = 0;
    extents->width  = surface->width;
    extents->height = surface->height;
    return TRUE;
}

static void
_cairo_xcb_surface_get_font_options (void *abstract_surface,
				     cairo_font_options_t *options)
{
    /* XXX  copy from xlib */
    _cairo_font_options_init_default (options);
    _cairo_font_options_set_round_glyph_positions (options, CAIRO_ROUND_GLYPH_POS_ON);
}

static cairo_status_t
_put_shm_image (cairo_xcb_surface_t    *surface,
		xcb_gcontext_t		gc,
		cairo_image_surface_t  *image)
{
#if CAIRO_HAS_XCB_SHM_FUNCTIONS
    cairo_xcb_shm_info_t *shm_info;

    shm_info = _cairo_user_data_array_get_data (&image->base.user_data,
						(const cairo_user_data_key_t *) surface->connection);
    if (shm_info == NULL)
	return CAIRO_INT_STATUS_UNSUPPORTED;

    shm_info->seqno =
	_cairo_xcb_connection_shm_put_image (surface->connection,
					     surface->drawable,
					     gc,
					     surface->width, surface->height,
					     0, 0,
					     image->width, image->height,
					     0, 0,
					     image->depth,
					     shm_info->shm,
					     shm_info->offset);

    return CAIRO_STATUS_SUCCESS;
#else
    return CAIRO_INT_STATUS_UNSUPPORTED;
#endif
}

static cairo_status_t
_put_image (cairo_xcb_surface_t    *surface,
	    cairo_image_surface_t  *image)
{
    cairo_status_t status = CAIRO_STATUS_SUCCESS;

    /* XXX track damaged region? */

    status = _cairo_xcb_connection_acquire (surface->connection);
    if (unlikely (status))
	return status;

    status = _cairo_xcb_connection_take_socket (surface->connection);
    if (unlikely (status)) {
	_cairo_xcb_connection_release (surface->connection);
	return status;
    }

    if (image->pixman_format == surface->pixman_format) {
	xcb_gcontext_t gc;

	assert (image->width == surface->width);
	assert (image->height == surface->height);
	assert (image->depth == surface->depth);
	assert (image->stride == (int) CAIRO_STRIDE_FOR_WIDTH_BPP (image->width, PIXMAN_FORMAT_BPP (image->pixman_format)));

	gc = _cairo_xcb_screen_get_gc (surface->screen,
				       surface->drawable,
				       surface->depth);

	status = _put_shm_image (surface, gc, image);
	if (status == CAIRO_INT_STATUS_UNSUPPORTED) {
	    _cairo_xcb_connection_put_image (surface->connection,
					     surface->drawable, gc,
					     image->width, image->height,
					     0, 0,
					     image->depth,
					     image->stride,
					     image->data);
	    status = CAIRO_STATUS_SUCCESS;
	}

	_cairo_xcb_screen_put_gc (surface->screen, surface->depth, gc);
    } else {
	ASSERT_NOT_REACHED;
    }

    _cairo_xcb_connection_release (surface->connection);
    return status;
}

static cairo_status_t
_cairo_xcb_surface_flush (void *abstract_surface)
{
    cairo_xcb_surface_t *surface = abstract_surface;
    cairo_status_t status;

    if (surface->drm != NULL && ! surface->marked_dirty)
	return surface->drm->backend->flush (surface->drm);

    if (likely (surface->fallback == NULL)) {
	status = CAIRO_STATUS_SUCCESS;
	if (! surface->base.finished && surface->deferred_clear)
	    status = _cairo_xcb_surface_clear (surface);

	return status;
    }

    status = surface->base.status;
    if (status == CAIRO_STATUS_SUCCESS && ! surface->base.finished) {
	status = cairo_surface_status (surface->fallback);

	if (status == CAIRO_STATUS_SUCCESS) {
	    status = _put_image (surface,
				 (cairo_image_surface_t *) surface->fallback);
	}

	if (status == CAIRO_STATUS_SUCCESS) {
	    cairo_surface_attach_snapshot (&surface->base,
					    surface->fallback,
					    cairo_surface_finish);
	}
    }

    cairo_surface_destroy (surface->fallback);
    surface->fallback = NULL;

    return status;
}

static cairo_status_t
_cairo_xcb_surface_mark_dirty (void *abstract_surface,
			       int x, int y,
			       int width, int height)
{
    cairo_xcb_surface_t *surface = abstract_surface;
    surface->marked_dirty = TRUE;
    return CAIRO_STATUS_SUCCESS;
}

static cairo_surface_t *
_cairo_xcb_surface_map_to_image (cairo_xcb_surface_t *surface)
{
    cairo_status_t status;
    cairo_image_surface_t *image;

    status = _get_image (surface, TRUE, &image);
    if (unlikely (status))
	return _cairo_surface_create_in_error (status);

    return &image->base;
}

static cairo_int_status_t
_cairo_xcb_surface_paint (void			*abstract_surface,
			  cairo_operator_t	 op,
			  const cairo_pattern_t	*source,
			  cairo_clip_t		*clip)
{
    cairo_xcb_surface_t *surface = abstract_surface;
    cairo_status_t status;

    if (surface->drm != NULL && ! surface->marked_dirty)
	return _cairo_surface_paint (surface->drm, op, source, clip);

    if (surface->fallback == NULL) {
	status = _cairo_xcb_surface_cairo_paint (surface, op, source, clip);
	if (status != CAIRO_INT_STATUS_UNSUPPORTED)
	    return status;

	status = _cairo_xcb_surface_render_paint (surface, op, source, clip);
	if (status != CAIRO_INT_STATUS_UNSUPPORTED)
	    return status;

	surface->fallback = _cairo_xcb_surface_map_to_image (surface);
    }

    return _cairo_surface_paint (surface->fallback, op, source, clip);
}

static cairo_int_status_t
_cairo_xcb_surface_mask (void			*abstract_surface,
			 cairo_operator_t	 op,
			 const cairo_pattern_t	*source,
			 const cairo_pattern_t	*mask,
			 cairo_clip_t		*clip)
{
    cairo_xcb_surface_t *surface = abstract_surface;
    cairo_status_t status;

    if (surface->drm != NULL && ! surface->marked_dirty)
	return _cairo_surface_mask (surface->drm, op, source, mask, clip);

    if (surface->fallback == NULL) {
	status =  _cairo_xcb_surface_cairo_mask (surface,
						 op, source, mask, clip);
	if (status != CAIRO_INT_STATUS_UNSUPPORTED)
	    return status;

	status =  _cairo_xcb_surface_render_mask (surface,
						  op, source, mask, clip);
	if (status != CAIRO_INT_STATUS_UNSUPPORTED)
	    return status;

	surface->fallback = _cairo_xcb_surface_map_to_image (surface);
    }

    return _cairo_surface_mask (surface->fallback,
				op, source, mask,
				clip);
}

static cairo_int_status_t
_cairo_xcb_surface_stroke (void				*abstract_surface,
			   cairo_operator_t		 op,
			   const cairo_pattern_t	*source,
			   cairo_path_fixed_t		*path,
			   const cairo_stroke_style_t	*style,
			   const cairo_matrix_t		*ctm,
			   const cairo_matrix_t		*ctm_inverse,
			   double			 tolerance,
			   cairo_antialias_t		 antialias,
			   cairo_clip_t			*clip)
{
    cairo_xcb_surface_t *surface = abstract_surface;
    cairo_status_t status;

    if (surface->drm != NULL && ! surface->marked_dirty) {
	return _cairo_surface_stroke (surface->drm,
				      op, source,
				      path, style,
				      ctm, ctm_inverse,
				      tolerance, antialias,
				      clip);
    }

    if (surface->fallback == NULL) {
	status = _cairo_xcb_surface_cairo_stroke (surface, op, source,
						  path, style,
						  ctm, ctm_inverse,
						  tolerance, antialias,
						  clip);

	if (status != CAIRO_INT_STATUS_UNSUPPORTED)
	    return status;

	status = _cairo_xcb_surface_render_stroke (surface, op, source,
						   path, style,
						   ctm, ctm_inverse,
						   tolerance, antialias,
						   clip);

	if (status != CAIRO_INT_STATUS_UNSUPPORTED)
	    return status;

	surface->fallback = _cairo_xcb_surface_map_to_image (surface);
    }

    return _cairo_surface_stroke (surface->fallback,
				  op, source,
				  path, style,
				  ctm, ctm_inverse,
				  tolerance, antialias,
				  clip);
}

static cairo_int_status_t
_cairo_xcb_surface_fill (void			*abstract_surface,
			 cairo_operator_t	 op,
			 const cairo_pattern_t	*source,
			 cairo_path_fixed_t	*path,
			 cairo_fill_rule_t	 fill_rule,
			 double			 tolerance,
			 cairo_antialias_t	 antialias,
			 cairo_clip_t		*clip)
{
    cairo_xcb_surface_t *surface = abstract_surface;
    cairo_status_t status;

    if (surface->drm != NULL && ! surface->marked_dirty) {
	return _cairo_surface_fill (surface->drm,
				    op, source,
				    path, fill_rule,
				    tolerance, antialias,
				    clip);
    }

    if (surface->fallback == NULL) {
	status = _cairo_xcb_surface_cairo_fill (surface, op, source,
						path, fill_rule,
						tolerance, antialias,
						clip);
	if (status != CAIRO_INT_STATUS_UNSUPPORTED)
	    return status;

	status = _cairo_xcb_surface_render_fill (surface, op, source,
						 path, fill_rule,
						 tolerance, antialias,
						 clip);
	if (status != CAIRO_INT_STATUS_UNSUPPORTED)
	    return status;

	surface->fallback = _cairo_xcb_surface_map_to_image (surface);
    }

    return _cairo_surface_fill (surface->fallback,
				op, source,
				path, fill_rule,
				tolerance, antialias,
				clip);
}

static cairo_int_status_t
_cairo_xcb_surface_glyphs (void				*abstract_surface,
			   cairo_operator_t		 op,
			   const cairo_pattern_t	*source,
			   cairo_glyph_t		*glyphs,
			   int				 num_glyphs,
			   cairo_scaled_font_t		*scaled_font,
			   cairo_clip_t			*clip,
			   int *num_remaining)
{
    cairo_xcb_surface_t *surface = abstract_surface;
    cairo_status_t status;

    *num_remaining = 0;

    if (surface->drm != NULL && ! surface->marked_dirty) {
	return _cairo_surface_show_text_glyphs (surface->drm,
						op, source,
						NULL, 0,
						glyphs, num_glyphs,
						NULL, 0, 0,
						scaled_font,
						clip);
    }

    if (surface->fallback == NULL) {
	status = _cairo_xcb_surface_cairo_glyphs (surface,
						  op, source,
						  scaled_font, glyphs, num_glyphs,
						  clip);
	if (status != CAIRO_INT_STATUS_UNSUPPORTED)
	    return status;

	status = _cairo_xcb_surface_render_glyphs (surface,
						   op, source,
						   scaled_font, glyphs, num_glyphs,
						   clip);
	if (status != CAIRO_INT_STATUS_UNSUPPORTED)
	    return status;

	surface->fallback = _cairo_xcb_surface_map_to_image (surface);
    }

    return _cairo_surface_show_text_glyphs (surface->fallback,
					    op, source,
					    NULL, 0,
					    glyphs, num_glyphs,
					    NULL, 0, 0,
					    scaled_font,
					    clip);
}

const cairo_surface_backend_t _cairo_xcb_surface_backend = {
    CAIRO_SURFACE_TYPE_XCB,

    _cairo_xcb_surface_create_similar,
    _cairo_xcb_surface_finish,
    _cairo_xcb_surface_acquire_source_image,
    _cairo_xcb_surface_release_source_image,
    NULL, NULL, NULL, /* dest acquire/release/clone */

    NULL, /* composite */
    NULL, /* fill */
    NULL, /* trapezoids */
    NULL, /* span */
    NULL, /* check-span */

    NULL, /* copy_page */
    NULL, /* show_page */
    _cairo_xcb_surface_get_extents,
    NULL, /* old-glyphs */
    _cairo_xcb_surface_get_font_options,

    _cairo_xcb_surface_flush,
    _cairo_xcb_surface_mark_dirty,
    _cairo_xcb_surface_scaled_font_fini,
    _cairo_xcb_surface_scaled_glyph_fini,

    _cairo_xcb_surface_paint,
    _cairo_xcb_surface_mask,
    _cairo_xcb_surface_stroke,
    _cairo_xcb_surface_fill,
    _cairo_xcb_surface_glyphs,
};

#if CAIRO_HAS_DRM_SURFACE && CAIRO_HAS_XCB_DRM_FUNCTIONS
static cairo_surface_t *
_xcb_drm_create_surface_for_drawable (cairo_xcb_connection_t *connection,
				      cairo_xcb_screen_t *screen,
				      xcb_drawable_t drawable,
				      pixman_format_code_t pixman_format,
				      int width, int height)
{
    uint32_t attachments[] = { XCB_DRI2_ATTACHMENT_BUFFER_FRONT_LEFT };
    xcb_dri2_get_buffers_reply_t *buffers;
    xcb_dri2_dri2_buffer_t *buffer;
    cairo_surface_t *surface;

    if (! _cairo_drm_size_is_valid (screen->device, width, height))
	return NULL;

    xcb_dri2_create_drawable (connection->xcb_connection,
			      drawable);

    buffers = xcb_dri2_get_buffers_reply (connection->xcb_connection,
					  xcb_dri2_get_buffers (connection->xcb_connection,
								drawable, 1,
								ARRAY_LENGTH (attachments),
								attachments),
					  0);
    if (buffers == NULL) {
	xcb_dri2_destroy_drawable (connection->xcb_connection,
				   drawable);
	return NULL;
    }

    /* If the drawable is a window, we expect to receive an extra fake front,
     * which would involve copying on each flush - contrary to the user
     * expectations. But that is likely to be preferable to mixing drm/xcb
     * operations.
     */
    buffer = xcb_dri2_get_buffers_buffers (buffers);
    if (buffers->count == 1 && buffer[0].attachment == XCB_DRI2_ATTACHMENT_BUFFER_FRONT_LEFT) {
	assert (buffer[0].cpp == PIXMAN_FORMAT_BPP (pixman_format) / 8);
	surface = cairo_drm_surface_create_for_name (screen->device,
						     buffer[0].name,
						     _cairo_format_from_pixman_format (pixman_format),
						     width, height,
						     buffer[0].pitch);
    } else {
	xcb_dri2_destroy_drawable (connection->xcb_connection,
				   drawable);
	surface = NULL;
    }
    free (buffers);

    return surface;
}

#else

static cairo_surface_t *
_xcb_drm_create_surface_for_drawable (cairo_xcb_connection_t *connection,
				      cairo_xcb_screen_t *screen,
				      xcb_drawable_t drawable,
				      pixman_format_code_t pixman_format,
				      int width, int height)
{
    return NULL;
}

#endif

cairo_surface_t *
_cairo_xcb_surface_create_internal (cairo_xcb_screen_t		*screen,
				    xcb_drawable_t		 drawable,
				    cairo_bool_t		 owns_pixmap,
				    pixman_format_code_t	 pixman_format,
				    xcb_render_pictformat_t	 xrender_format,
				    int				 width,
				    int				 height)
{
    cairo_xcb_surface_t *surface;

    surface = malloc (sizeof (cairo_xcb_surface_t));
    if (unlikely (surface == NULL))
	return _cairo_surface_create_in_error (_cairo_error (CAIRO_STATUS_NO_MEMORY));

    _cairo_surface_init (&surface->base,
			 &_cairo_xcb_surface_backend,
			 &screen->connection->device,
			 _cairo_content_from_pixman_format (pixman_format));

    surface->connection = _cairo_xcb_connection_reference (screen->connection);
    surface->screen = screen;
    cairo_list_add (&surface->link, &screen->surfaces);

    surface->fallback = NULL;

    surface->drawable = drawable;
    surface->owns_pixmap = owns_pixmap;
    surface->use_pixmap = 0;

    surface->deferred_clear = FALSE;

    surface->width  = width;
    surface->height = height;
    surface->depth  = PIXMAN_FORMAT_DEPTH (pixman_format);

    surface->picture = XCB_NONE;

    surface->pixman_format = pixman_format;
    surface->xrender_format = xrender_format;

    surface->flags = screen->connection->flags;

    surface->marked_dirty = FALSE;
    surface->drm = NULL;
    if (screen->device != NULL) {
	surface->drm = _xcb_drm_create_surface_for_drawable (surface->connection,
							     surface->screen,
							     drawable,
							     pixman_format,
							     width, height);
    }

    return &surface->base;
}

static xcb_screen_t *
_cairo_xcb_screen_from_visual (xcb_connection_t *connection,
			       xcb_visualtype_t *visual,
			       int *depth)
{
    xcb_depth_iterator_t d;
    xcb_screen_iterator_t s;

    s = xcb_setup_roots_iterator (xcb_get_setup (connection));
    for (; s.rem; xcb_screen_next (&s)) {
	if (s.data->root_visual == visual->visual_id) {
	    *depth = s.data->root_depth;
	    return s.data;
	}

	d = xcb_screen_allowed_depths_iterator(s.data);
	for (; d.rem; xcb_depth_next (&d)) {
	    xcb_visualtype_iterator_t v = xcb_depth_visuals_iterator (d.data);

	    for (; v.rem; xcb_visualtype_next (&v)) {
		if (v.data->visual_id == visual->visual_id) {
		    *depth = d.data->depth;
		    return s.data;
		}
	    }
	}
    }

    return NULL;
}

cairo_surface_t *
cairo_xcb_surface_create (xcb_connection_t  *xcb_connection,
			  xcb_drawable_t     drawable,
			  xcb_visualtype_t  *visual,
			  int		     width,
			  int		     height)
{
    cairo_xcb_screen_t *screen;
    xcb_screen_t *xcb_screen;
    cairo_format_masks_t image_masks;
    pixman_format_code_t pixman_format;
    xcb_render_pictformat_t xrender_format;
    int depth;

    if (xcb_connection_has_error (xcb_connection))
	return _cairo_surface_create_in_error (CAIRO_STATUS_WRITE_ERROR);

    if (unlikely (width > XLIB_COORD_MAX || height > XLIB_COORD_MAX))
	return _cairo_surface_create_in_error (CAIRO_STATUS_INVALID_SIZE);

    xcb_screen = _cairo_xcb_screen_from_visual (xcb_connection, visual, &depth);
    if (unlikely (xcb_screen == NULL))
	return _cairo_surface_create_in_error (CAIRO_STATUS_INVALID_VISUAL);

    image_masks.alpha_mask = 0;
    image_masks.red_mask   = visual->red_mask;
    image_masks.green_mask = visual->green_mask;
    image_masks.blue_mask  = visual->blue_mask;
    if (depth > 16)
	image_masks.bpp = 32;
    else if (depth > 8)
	image_masks.bpp = 16;
    else if (depth > 1)
	image_masks.bpp = 8;
    else
	image_masks.bpp = 1;

    if (! _pixman_format_from_masks (&image_masks, &pixman_format))
	return _cairo_surface_create_in_error (_cairo_error (CAIRO_STATUS_INVALID_FORMAT));

    screen = _cairo_xcb_screen_get (xcb_connection, xcb_screen);
    if (unlikely (screen == NULL))
	return _cairo_surface_create_in_error (_cairo_error (CAIRO_STATUS_NO_MEMORY));

    xrender_format =
	_cairo_xcb_connection_get_xrender_format_for_visual (screen->connection,
							     visual->visual_id);

    return _cairo_xcb_surface_create_internal (screen, drawable, FALSE,
					       pixman_format,
					       xrender_format,
					       width, height);
}
#if CAIRO_HAS_XLIB_XCB_FUNCTIONS
slim_hidden_def (cairo_xcb_surface_create);
#endif

cairo_surface_t *
cairo_xcb_surface_create_for_bitmap (xcb_connection_t	*xcb_connection,
				     xcb_screen_t	*xcb_screen,
				     xcb_pixmap_t	 bitmap,
				     int		 width,
				     int		 height)
{
    cairo_xcb_screen_t *screen;

    if (xcb_connection_has_error (xcb_connection))
	return _cairo_surface_create_in_error (CAIRO_STATUS_WRITE_ERROR);

    if (width > XLIB_COORD_MAX || height > XLIB_COORD_MAX)
	return _cairo_surface_create_in_error (CAIRO_STATUS_INVALID_SIZE);

    screen = _cairo_xcb_screen_get (xcb_connection, xcb_screen);
    if (unlikely (screen == NULL))
	return _cairo_surface_create_in_error (_cairo_error (CAIRO_STATUS_NO_MEMORY));

    return _cairo_xcb_surface_create_internal (screen, bitmap, FALSE,
					       PIXMAN_a1,
					       screen->connection->standard_formats[CAIRO_FORMAT_A1],
					       width, height);
}
#if CAIRO_HAS_XLIB_XCB_FUNCTIONS
slim_hidden_def (cairo_xcb_surface_create_for_bitmap);
#endif

/**
 * cairo_xcb_surface_create_with_xrender_format:
 * @connection: an XCB connection
 * @drawable: an XCB drawable
 * @screen: the XCB screen associated with @drawable
 * @format: the picture format to use for drawing to @drawable. The
 *          depth of @format mush match the depth of the drawable.
 * @width: the current width of @drawable
 * @height: the current height of @drawable
 *
 * Creates an XCB surface that draws to the given drawable.
 * The way that colors are represented in the drawable is specified
 * by the provided picture format.
 *
 * Note: If @drawable is a Window, then the function
 * cairo_xcb_surface_set_size() must be called whenever the size of the
 * window changes.
 *
 * Return value: the newly created surface.
 **/
cairo_surface_t *
cairo_xcb_surface_create_with_xrender_format (xcb_connection_t	    *xcb_connection,
					      xcb_screen_t	    *xcb_screen,
					      xcb_drawable_t	     drawable,
					      xcb_render_pictforminfo_t *format,
					      int		     width,
					      int		     height)
{
    cairo_xcb_screen_t *screen;
    cairo_format_masks_t image_masks;
    pixman_format_code_t pixman_format;

    if (xcb_connection_has_error (xcb_connection))
	return _cairo_surface_create_in_error (CAIRO_STATUS_WRITE_ERROR);

    if (width > XLIB_COORD_MAX || height > XLIB_COORD_MAX)
	return _cairo_surface_create_in_error (CAIRO_STATUS_INVALID_SIZE);

    image_masks.alpha_mask =
	(unsigned long) format->direct.alpha_mask << format->direct.alpha_shift;
    image_masks.red_mask =
	(unsigned long) format->direct.red_mask << format->direct.red_shift;
    image_masks.green_mask =
	(unsigned long) format->direct.green_mask << format->direct.green_shift;
    image_masks.blue_mask =
	(unsigned long) format->direct.blue_mask << format->direct.blue_shift;
#if 0
    image_masks.bpp = format->depth;
#else
    if (format->depth > 16)
	image_masks.bpp = 32;
    else if (format->depth > 8)
	image_masks.bpp = 16;
    else if (format->depth > 1)
	image_masks.bpp = 8;
    else
	image_masks.bpp = 1;
#endif

    if (! _pixman_format_from_masks (&image_masks, &pixman_format))
	return _cairo_surface_create_in_error (_cairo_error (CAIRO_STATUS_INVALID_FORMAT));

    screen = _cairo_xcb_screen_get (xcb_connection, xcb_screen);
    if (unlikely (screen == NULL))
	return _cairo_surface_create_in_error (_cairo_error (CAIRO_STATUS_NO_MEMORY));

    return _cairo_xcb_surface_create_internal (screen,
					       drawable,
					       FALSE,
					       pixman_format,
					       format->id,
					       width, height);
}
#if CAIRO_HAS_XLIB_XCB_FUNCTIONS
slim_hidden_def (cairo_xcb_surface_create_with_xrender_format);
#endif

/**
 * cairo_xcb_surface_set_size:
 * @surface: a #cairo_surface_t for the XCB backend
 * @width: the new width of the surface
 * @height: the new height of the surface
 *
 * Informs cairo of the new size of the XCB drawable underlying the
 * surface. For a surface created for a window (rather than a pixmap),
 * this function must be called each time the size of the window
 * changes. (For a subwindow, you are normally resizing the window
 * yourself, but for a toplevel window, it is necessary to listen for
 * ConfigureNotify events.)
 *
 * A pixmap can never change size, so it is never necessary to call
 * this function on a surface created for a pixmap.
 **/
void
cairo_xcb_surface_set_size (cairo_surface_t *abstract_surface,
			    int              width,
			    int              height)
{
    cairo_xcb_surface_t *surface;
    cairo_status_t status_ignored;

    if (unlikely (abstract_surface->status))
	return;
    if (unlikely (abstract_surface->finished)) {
	status_ignored = _cairo_surface_set_error (abstract_surface,
						   _cairo_error (CAIRO_STATUS_SURFACE_FINISHED));
	return;
    }

    if (abstract_surface->type != CAIRO_SURFACE_TYPE_XCB) {
	status_ignored = _cairo_surface_set_error (abstract_surface,
						   _cairo_error (CAIRO_STATUS_SURFACE_TYPE_MISMATCH));
	return;
    }

    if (width > XLIB_COORD_MAX || height > XLIB_COORD_MAX) {
	status_ignored = _cairo_surface_set_error (abstract_surface,
						   _cairo_error (CAIRO_STATUS_INVALID_SIZE));
	return;
    }

    surface = (cairo_xcb_surface_t *) abstract_surface;
    surface->width  = width;
    surface->height = height;
}
#if CAIRO_HAS_XLIB_XCB_FUNCTIONS
slim_hidden_def (cairo_xcb_surface_set_size);
#endif

redpajama_set_name: RedPajamaGithub


ENTER TO WIN A MORRISSEY VINYL/DVD PRIZE PACK & A SHOT AT A TURNTABLE!
The Record Exchange has a Morrissey prize pack to give away that includes a Vauxhall and I vinyl LP and Introducing Morrissey DVD – plus the winner will be entered into a final national drawing for a Crosley turntable!
To enter the drawing, send an email with the subject "Morrissey" HERE by midnight Thursday, Oct. 9. We will draw a name at random and notify the winner on Friday, Oct. 10.
Next ENTER TO WIN A GRATEFUL DEAD PRIZE PACK WITH 3CD SET & PINT GLASSES!
Previous NEW RELEASE TUESDAY: WEEZER, STEVIE NICKS, JACKSON BROWNE, FLYING LOTUS, SBTRKT, CARIBOU, JASON ALDEAN, PLUS VINYL TUESDAY!


Choice Career Fairs will be in Ft. Lauderdale, FL on Tuesday, October 9, 2018. Meet face-to-face with the hiring decision makers from some of the best employers in Ft. Lauderdale. We look forward to seeing you at the career fair.
Register now and receive VIP access - It's FREE or for more information on the event, visit the Ft. Lauderdale Career Fair page.


text:
Super continuum generation at 800 nm in highly nonlinear photonic crystal fibers with normal dispersion
Kim Per Hansen, Jacob Juul Larsen, Jacob Riis Jensen, Søren Keiding, Jes Broeng, Harald R. Simonsen, Anders Overgaard Bjarklev
NKT Group
Crystal Fibre A/S
More than 90 nm broad self-phase modulation (SPM) induced pulses have been created from both 25 and 50 fs pulses in just 12.5 cm of fiber. The broadening is more than 2.5 times that observed in standard SMF. SPM broadening in PCFs has several advantages over more complex super continuum generation (SCG) effects in fibers with zero or positive dispersion at the pumping wavelength. The output is very stable, there is no loss of power to unwanted wavelengths and the spectral shape is relatively insensitive to fluctuations in pumping power. This also makes the output suitable for subsequent compression, for 10 fs-range pulse generation. By shifting the zero-dispersion and pumping wavelength to the telecom range, WDM sources become a potential application.
Proceedings on The 14th Annual Meeting of the IEEE Lasers and Electro-Optics Society
https://doi.org/10.1109/LEOS.2001.969008
14th Annual Meeting of the IEEE Lasers and Electro-Optics Society 2001 - San Diego, United States
14th Annual Meeting of the IEEE Lasers and Electro-Optics Society 2001
Copyright: 2000 IEEE. Personal use of this material is permitted. However, permission to reprint/republish this material for advertising or promotional purposes or for creating new collective works for resale or redistribution to servers or lists, or to reuse any copyrighted component of this work in other works must be obtained from the IEEE
10.1109/LEOS.2001.969008
OvergaardFinal published version, 153 KB
Dive into the research topics of 'Super continuum generation at 800 nm in highly nonlinear photonic crystal fibers with normal dispersion'. Together they form a unique fingerprint.
Supercontinuum Generation Physics 100%
Warm Dark Matter Physics 50%
Hansen, K. P., Larsen, J. J., Jensen, J. R., Keiding, S., Broeng, J., Simonsen, H. R., & Bjarklev, A. O. (2001). Super continuum generation at 800 nm in highly nonlinear photonic crystal fibers with normal dispersion. In Proceedings on The 14th Annual Meeting of the IEEE Lasers and Electro-Optics Society (Vol. 2, pp. 703-704) https://doi.org/10.1109/LEOS.2001.969008
Hansen, Kim Per ; Larsen, Jacob Juul ; Jensen, Jacob Riis et al. / Super continuum generation at 800 nm in highly nonlinear photonic crystal fibers with normal dispersion. Proceedings on The 14th Annual Meeting of the IEEE Lasers and Electro-Optics Society. Vol. 2 2001. pp. 703-704
@inproceedings{c2b2f0ac26004c188c3b726d0ed49ef9,
title = "Super continuum generation at 800 nm in highly nonlinear photonic crystal fibers with normal dispersion",
abstract = "More than 90 nm broad self-phase modulation (SPM) induced pulses have been created from both 25 and 50 fs pulses in just 12.5 cm of fiber. The broadening is more than 2.5 times that observed in standard SMF. SPM broadening in PCFs has several advantages over more complex super continuum generation (SCG) effects in fibers with zero or positive dispersion at the pumping wavelength. The output is very stable, there is no loss of power to unwanted wavelengths and the spectral shape is relatively insensitive to fluctuations in pumping power. This also makes the output suitable for subsequent compression, for 10 fs-range pulse generation. By shifting the zero-dispersion and pumping wavelength to the telecom range, WDM sources become a potential application.",
author = "Hansen, {Kim Per} and Larsen, {Jacob Juul} and Jensen, {Jacob Riis} and S{\o}ren Keiding and Jes Broeng and Simonsen, {Harald R.} and Bjarklev, {Anders Overgaard}",
note = "Copyright: 2000 IEEE. Personal use of this material is permitted. However, permission to reprint/republish this material for advertising or promotional purposes or for creating new collective works for resale or redistribution to servers or lists, or to reuse any copyrighted component of this work in other works must be obtained from the IEEE; 14th Annual Meeting of the IEEE Lasers and Electro-Optics Society 2001, LEOS 2001 ; Conference date: 12-11-2001 Through 13-11-2001",
doi = "10.1109/LEOS.2001.969008",
isbn = "0-7803-7105-4",
booktitle = "Proceedings on The 14th Annual Meeting of the IEEE Lasers and Electro-Optics Society",
Hansen, KP, Larsen, JJ, Jensen, JR, Keiding, S, Broeng, J, Simonsen, HR & Bjarklev, AO 2001, Super continuum generation at 800 nm in highly nonlinear photonic crystal fibers with normal dispersion. in Proceedings on The 14th Annual Meeting of the IEEE Lasers and Electro-Optics Society. vol. 2, pp. 703-704, 14th Annual Meeting of the IEEE Lasers and Electro-Optics Society 2001, San Diego, California, United States, 12/11/2001. https://doi.org/10.1109/LEOS.2001.969008
Super continuum generation at 800 nm in highly nonlinear photonic crystal fibers with normal dispersion. / Hansen, Kim Per; Larsen, Jacob Juul; Jensen, Jacob Riis et al.
Proceedings on The 14th Annual Meeting of the IEEE Lasers and Electro-Optics Society. Vol. 2 2001. p. 703-704.
T1 - Super continuum generation at 800 nm in highly nonlinear photonic crystal fibers with normal dispersion
AU - Hansen, Kim Per
AU - Larsen, Jacob Juul
AU - Jensen, Jacob Riis
AU - Keiding, Søren
AU - Broeng, Jes
AU - Simonsen, Harald R.
AU - Bjarklev, Anders Overgaard
N2 - More than 90 nm broad self-phase modulation (SPM) induced pulses have been created from both 25 and 50 fs pulses in just 12.5 cm of fiber. The broadening is more than 2.5 times that observed in standard SMF. SPM broadening in PCFs has several advantages over more complex super continuum generation (SCG) effects in fibers with zero or positive dispersion at the pumping wavelength. The output is very stable, there is no loss of power to unwanted wavelengths and the spectral shape is relatively insensitive to fluctuations in pumping power. This also makes the output suitable for subsequent compression, for 10 fs-range pulse generation. By shifting the zero-dispersion and pumping wavelength to the telecom range, WDM sources become a potential application.
AB - More than 90 nm broad self-phase modulation (SPM) induced pulses have been created from both 25 and 50 fs pulses in just 12.5 cm of fiber. The broadening is more than 2.5 times that observed in standard SMF. SPM broadening in PCFs has several advantages over more complex super continuum generation (SCG) effects in fibers with zero or positive dispersion at the pumping wavelength. The output is very stable, there is no loss of power to unwanted wavelengths and the spectral shape is relatively insensitive to fluctuations in pumping power. This also makes the output suitable for subsequent compression, for 10 fs-range pulse generation. By shifting the zero-dispersion and pumping wavelength to the telecom range, WDM sources become a potential application.
U2 - 10.1109/LEOS.2001.969008
DO - 10.1109/LEOS.2001.969008
SN - 0-7803-7105-4
BT - Proceedings on The 14th Annual Meeting of the IEEE Lasers and Electro-Optics Society
T2 - 14th Annual Meeting of the IEEE Lasers and Electro-Optics Society 2001
Hansen KP, Larsen JJ, Jensen JR, Keiding S, Broeng J, Simonsen HR et al. Super continuum generation at 800 nm in highly nonlinear photonic crystal fibers with normal dispersion. In Proceedings on The 14th Annual Meeting of the IEEE Lasers and Electro-Optics Society. Vol. 2. 2001. p. 703-704 doi: 10.1109/LEOS.2001.969008


At GEC Luxury Design & Build, we offer a full building package, from design and planning to build and completion. We specialise in creating beautiful, creative spaces for luxury homes, properties and large estates. Winners of the Houzz awards, we are known for our creativity and ingenuity when it comes to inspirational design and build.
We know how important your home is to you and your client. We never let our clients down; your project will always be completed on schedule and on budget. Plus, we only use reliable, trusted suppliers who meet the highest quality standards, giving you full peace of mind that your project will be delivered exactly how you envisioned. What's more, as well as a full project management service, we will liaise with architects and planning departments on your behalf, removing any hassle or pressure, so you can focus on your day to day life.
GEC Luxury Design & Build fully respects our people and our clients. Our responsible, professional, bespoke approach to residential projects allows our clients to have full trust in our services and our abilities.
In the first instance, we would visit you or a representative at the property. We would discuss your project thoroughly, talking through any concerns and possible building regulations. After our visit, we will send you a free, written no obligation quotation, which includes a detailed list and all building works required to undertake your project.
"As the Marketing Manager for GEC, I manage the external communications and marketing activity. My aim is to communicate the GEC brand message effectively to our clients and stakeholders working closely with the Brand Manager to ensure our quality reputation and image is maintained".


When my wife and I arrived in Kuwait a few years ago, we thought we'd brought with us an informed perspective on the Middle East.
But when we faced Kuwaiti heat for the first time, we realized there might be a gap between our academic preparations and the actual life we were undertaking. At 10 p.m. the temperature was more than 100 degrees Fahrenheit (42 C). It felt like we were standing behind the exhaust pipe of an idling car. The next day brought a temperature of 122 degrees (50 C), and we again had to adjust our definition of the word hot.
The [language of God and devotion to Islam] are as pervasive as the heat that dictates life in Arabia.
Similarly, we realized quickly our lack of appropriate language in the West to describe the influence of Islam on Middle Eastern life. In parallel with our culture, Reformed Christians have adopted the language of separation between everyday life and religion. In the Arab world, however, life and religion remain so infused that many Muslims do not even have words to describe a separation between them.
Insha'Allah, "by the will of God," is one of the few Arabic religious phrases that have crossed into Western awareness— often as a source of frustration for Western businesspeople who think it means they cannot secure a firm commitment from their Arab counterparts.
But when Muslims speak that way they are not being evasive. Nor would it be accurate to describe Insha'Allah as merely an expression. Rather, it is a seamless integration of faith and language that we cannot fully appreciate until we see how everything in Arab life—from business transactions to driving to parenting—happens, literally, according to the will of God.
Thus the language of God and devotion to Islam are as pervasive as the heat that dictates life in the Arab world, the birthplace of Islam.
The Middle East's deserts contain some of the most unforgiving terrain on Earth, and those who dwell here must live according to strict practices in order to survive.
Mohammed, Islam's most venerated prophet, was first a shepherd. He was intimately familiar with the hardships of desert life and, as a result, Islam's basic tenets reflect an unbending adherence to ritual and tradition. Centuries later, Muslims still unquestioningly adhere to those tenets because Allah, through his desert-wise prophet, left little room for questions.
When Christians in the West try to decipher the Muslim mindset, we do so at great disadvantage: we simply have little conception of the strength of a message born in such an unforgiving environment. We often label Muslim devotion as extremist, linking the terrible things we see on the news and the extreme language we hear with the average Muslim.
The simple reality of millions of Muslims faithfully and peacefully observing the rituals of their faith should give us something to ponder. I cannot claim to live a seamlessly Reformed Christian life; when I say "God willing," it is often as an add-on—one with more doubt than certainty. And I do not know many Christians—even among our pastors and leaders—who get down on their knees to pray, much less five times a day.
After four years living in the Middle East, we still agree that the call to prayer, the adhan, is perhaps the most potent reminder of life in our adopted home. Five times a day, from before sunrise to after sunset, the hauntingly beautiful voices of the muezzins blanket Kuwait, calling the faithful to prayer with Allahu Akbar, "God is great." With mosques on almost every block, the reminder to prostrate oneself before the Creator finds its way into every corner and crevice, just as the desert dust sifts into our clothing.
We do our own faith irreparable harm when we dismiss such devotion as superstition or fanaticism. Rather, we have much to learn from Islam, a faith that demands so much of its believers.
Give examples of how, in the West, even "Reformed Christians have adopted the language of separation between everyday life and religion." Is that a good thing or a bad thing?
Read James 4:13-15. Do you think that parallels what Muslims believe when they say Insha'Allah ("if God wills")?
How can we live a more seamless Christian life within the (largely) secular culture in which we live? Are Muslims good role models for us? Do you agree with Van Staalduinen that we have much to learn from Muslims on this score?
Would a stricter observance of spiritual disciplines (prayer, Bible reading, giving to the poor, etc.) make us better Christians? What would be the gains? What might be the dangers?
So is everything that happens God's will? Even the terrible tragedies? Even the troubles we inflict on others or on ourselves?
Brent van Staalduinen teaches high school English, journalism, and film at an international school in Kuwait City. He is a member of Fellowship Christian Reformed Church in Ancaster, Ontario.
It's not the devotion that's fanaticism.
It's when they think that devotion requires killing us - *that's* when it's fanaticism.
"We do our faith irreparable harm when we dismiss such devotion as superstition of fanaticism. Rather, we have much to learn from Islam, a faith that demands so much of its believers."
Sometimes Christians are called "legalist" by other Christians, if they live out their faith.
Perhaps one of the reasons the Islamic religion demands so much of their believers, is that their faith is based on works of righteousness. They have to earn their way to heaven. Sadly, it is done in vain, as it does not lead to eternal life. This is a call for the Christian to be urgent, diligent, passionate, and faithful, in proclaiming the Gospel.
While I appreciate your perspective on Insha'Allah, it seems a bit idealistic. My brother worked in the Emirates for 8 years and learned to dread the phrase. While there were many whose faith as an important part of their lives, there were also many whose faith was culturally driven, a problem we are all to familiar with here in North America. Over time he came to realize that Insha'Allah could be used to place the blame on God when promises went unfulfilled.
From what I understand, Kuwait has plenty of secularly focused individuals - a fair amount of wealth for many in the country and a focus on cars and clothes. While I appreciate the point of your article, but don't think insha'Allah needs to be idealised in order to make it.
Devotion, praying five times a day, or on your knees, is a good thing. Provided it is not to a false god. We often pray five times a day. Often more. It is fanatical in a way, but it is not fanaticism. It is simply living in faith before God. It is not about fulfilling a five times a day legal rule, but finding appropriate context and opportunity.
As Christians, we know God is part of all of life, not just some parts of it.
Using a harsh environment as an excuse for the inaccuracies or excesses of a religion, seems rather to miss the point. The desert is harsh, but so is the frozen north and the hazards of the jungle. We do not practice our faith as if it will somehow reduce the hazards of our physical existence. Islam in particular does not treat life as if it is somehow more important than worship.
God willing is also a statement of faith for Christians, one we often neglect to make. The control we have over our own lives is not greater than the control that God has over us.
I've done some studying of the Islamic religion and their diety. This author seems to be confused about who Allah is and who Yahweh is...and they are not interchangeable. I was therefore confused by his use of God and Allah as one in the same. I was always taught as a Christian that the capital G was reserved for the one true God, Father Son and Holy Spirit, and all others were a lower case god. The God of our Scriptures has given us salvation from sin...Islam is works-righteousness, with salvation as a wish and a prayer.
I agree agree with Mike James, John Zylstra, John Runner & Truth Matters below so I'll try not to restate what they have said, except that I want to also say that I was appalled at the author's capitalization of the word god when referring to the Muslim god. I too felt the author was confused and confusing about who Allah is and who the one true God is.
I posted this transcript & link in response to Rev Tom Ooterhuis' submission on the meaning of jihad & I thought it would be appropriate hear as well. Below the transcript is a link you can copy & paste in your web browser.
Daniel Shayesteh was many things: radical Muslim, active militant, Iranian fundamentalist, death row inmate . . . but today, Daniel is a born-again Christian! He travels throughout the world revealing the hate-based teachings of the Quran—Islam's holy book—and shines light on the truth of the Bible. Watch this informative, illustrated testimony as he shares his miraculous escape from darkness.